对象的内存销毁时间表

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

// 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()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容