ios - 在 ARC 下的 Objective-C 上,当归零弱引用变为 nil 时如何得到通知?

标签 ios objective-c memory-management automatic-ref-counting

是否有一种机制可以让对象知道归零弱引用变为 nil?

比如我有一个属性

@property (nonatomic, weak) MyClass *theObject;

当对象解除分配并且属性变为零时,我想得到通知。但是怎么办?归零弱引用系统是否在对象消失时使用setter将属性设置为nil?

最佳答案

运行时只是将弱变量 _theObect 设置为 nil,不会调用自定义 setter 。

您可以做什么(如果您真的需要通知):

  • 定义一个本地“watcher”类并在该类中实现 dealloc,
  • 创建一个观察者对象并将其设置为_theObject 的“关联对象”。

当 _theObject 被释放时,关联的对象被释放和释放(如果没有其他强引用指向它)。因此它的 dealloc 方法被调用。这是您的“通知”。

(我正在手机上写这个,如果需要的话可以稍后填写详细信息。)

关于ios - 在 ARC 下的 Objective-C 上,当归零弱引用变为 nil 时如何得到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344092/

相关文章:

ios - UIView 滑动动画故障

ios Storyboard选项卡 > ViewController > TableView

ios - 尝试在 SpriteKit 编辑器中使用 GKComponent 子类会在保存时静默崩溃 Xcode

ios - XCDYouTubeVideoPlayer 文件是为存档构建的,它不是被链接的体系结构

objective-c - 在 UILabel 上执行选择器会导致崩溃?

ios - ARC带 block 和保留周期

ios - UICollectionView 在某些单元格上重复标签和图像

iphone - 核心情节问题: How to add a data Indicator

objective-c - Obj-C内存管理 setter 方法

android - Android 中 HashMap 的内存效率