image

编辑人: 长安花落尽

calendar2025-04-18

message8

visits519

使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?

无论在MRC下还是ARC下均不需要
对象的内存销毁时间表,分四个步骤:

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

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

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share