加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift中的ARC相关

发布时间:2020-12-14 07:20:21 所属栏目:百科 来源:网络整理
导读:关于内存管理 当我们选择这条职业道路的时候,不可避免的我们都要内存管理打交道。无论是C中的 malloc、free 还是C++中的 new、delete 。它如此重要又如此麻烦易错。为了把大家从内存管理解脱出来,C++中引入了智能指针,iOS中引入了ARC(automatic reference

关于内存管理

当我们选择这条职业道路的时候,不可避免的我们都要内存管理打交道。无论是C中的malloc、free还是C++中的new、delete。它如此重要又如此麻烦易错。为了把大家从内存管理解脱出来,C++中引入了智能指针,iOS中引入了ARC(automatic reference counting),其实两种的原理都是一样的就是对动态分配的对象进行自动引用技术确保对象能够正确销毁,防止出现内存泄露。下面我们就一起了解一下Swift中该机制。

Swift中的ARC

在Swift中对于引用类型的对象采用的就是自动内存管理,也就是说系统会帮我们处理好内存的申请和分配。当我们初始化创建对象的时候系统自动分配内存,而在释放内存的时候会遵循自动引用计数原则:当对象的引用计算为0的时候内存会自动被回收。这样一来我们只需要将我们的注意力放在在合适的地方置空引用就行了。再次提醒一下:Swift中的ARC只针对引用类型对象。首先,我们从一段简单的Objective-C代码来认识该机制:

NSObject *box = [NSObject new];
//More code,and then later on…
[box release];

该段代码中我们先创建了一个NSObject类对象box,此时对象的retain计数为1,后面我们对box进行了release操作,那么此时的box的retain计数为0,然后系统会自动销毁box对象,box也就变为nil。

对于我们中的大多数来说,我们其实并不清楚内存中发生的了什么。这不是什么讽刺,仅仅是因为我们只是习惯性的享受便利,而放弃去探究其机制。但是这是不正确的,我们总会在某个时间会遇到于内存管理相关的内容,如果我们对这个特性仅仅停留在使用上面,而没有一个清新的认识的话那么当问题出现的时候,你会发现问题非常难调适(相信使用过C++的人对此肯定深有感触)。我们来看一个Swift的例子:

class Post
{
    var topic:String
    init(t:String)
    {
        self.topic = t
        print(“A post lives!”)
    }
    deinit
    {
        print(“A post has passed away                        

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读