对象的内存销毁时间表

2018-08-15  本文已影响0人  佟掌柜666

// 对象的内存销毁时间表

// http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁)

// https://github.com/ChenYilong

// 根据 WWDC 2011, Session 322 (36分22秒)中发布的内存销毁时间表

1. 调用 -release :引用计数变为零

    * 对象正在被销毁,生命周期即将结束.

    * 不能再有新的 __weak 弱引用, 否则将指向 nil.

    * 调用 [self dealloc]

2. 子类 调用 -dealloc

    * 继承关系中最底层的子类 在调用 -dealloc

    * 如果是 MRC 代码 则会手动释放实例变量们(iVars)

    * 继承关系中每一层的父类 都在调用 -dealloc

3. NSObject 调 -dealloc

    * 只做一件事:调用 Objective-C runtime 中的 object_dispose() 方法

4. 调用 object_dispose()

    * 为 C++ 的实例变量们(iVars)调用 destructors

    * 为 ARC 状态下的 实例变量们(iVars) 调用 -release

    * 解除所有使用 runtime Associate方法关联的对象

    * 解除所有 __weak 引用

    * 调用 free()

上一篇下一篇

猜你喜欢

热点阅读