[杂谈]Objective C对象的生命周期

OC 已经随着苹果的很多年头了,这里说的 OC 是 XCode 8.3 自带的版本,将来或者过去的版本不在本文的讨论范围:

1、类型初始化函数 +load

这是类型全局函数,在你程序启动时,不管你程序量是否使用了该类型,它都会自动被调用。

2、懒加载初始化函数 +initialize

这个也是类型的全局函数,在你第一次引用该类型的实例时,会被调用。如果你的程序里没有对该类型的引用或操作,那么它就不会被调用。

3、类型的析构函数 -dealloc

这个函数是类型的成员函数,它在 OC 的垃圾回收机制要释放你的对象实例时被调用,以便做相应的清理。

4、对象的引用计数

对象的当前引用计数可以用 CFGetRetainCount 来获取,正常 OC 的对象的引用计数和普通的接口的规则是一致的,即它每被引用一次,计数加一,取消一次引用,计数减一,减少到 0 时,对象被释放回收。

如果不想引用计数变更,可以使用 __weak 修饰变量,属性用 weak。通过这一点,可以有效的避免循环引用的问题。

分享到: