Swift中的ARC相关

前端之家收集整理的这篇文章主要介绍了Swift中的ARC相关前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

关于内存管理

当我们选择这条职业道路的时候,不可避免的我们都要内存管理打交道。无论是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  原文链接:https://www.f2er.com/swift/324777.html

猜你在找的Swift相关文章