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

ope*_*rog 21 memory-management objective-c ios automatic-ref-counting

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

例如,我有一个属性

@property (nonatomic, weak) MyClass *theObject;
Run Code Online (Sandbox Code Playgroud)

当对象解除分配并且属性变为零时,我希望得到通知.但是怎么样?当对象消失时,归零弱参考系统是否使用setter将属性设置为nil?

Mar*_*n R 24

运行时只是将弱ivar _theObect设置为nil,不调用自定义setter.

你能做什么(如果你真的需要通知):

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

当_theObject被释放时,关联的对象被释放并释放(如果没有其他强烈的引用).因此,它的dealloc方法被称为.这是你的"通知".

(我正在手机上写这个,如有必要,可以在以后填写详细信息.)


Dai*_*jan 0

没有针对弱变量的通知系统。