第二十三章 Swift 析构过程

在一个类的实例被释放之前,析构函数被立即调用。用关键字deinit来标示析构函数,类似于初始化函数用init来标示。析构函数只适用于类类型。

OC中的dealloc函数将无法使用。

析构过程原理

Swift 通过自动引用计数(ARC)处理实例的内存管理,会自动释放不再需要的实例以释放资源。

通常当你的实例被释放时不需要手动地去清理。但是当使用自己的资源时,你可能需要进行一些额外的清理。

// 在类的定义中,每个类最多只能有一个析构函数。析构函数不带任何参数,在写法上不带括号:

deinit {
    // 执行析构过程
}
var counter = 0;  // 引用计数器
class BaseClass {
    init() {
        counter += 1;
    }

    deinit {
        counter -= 1;
    }
}

var show: BaseClass? = BaseClass()
print(counter)
show = nil // 当 show = nil 语句执行后,计算器减去 1,show 占用的内存就会释放。
print(counter)

// 1
// 0
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容