7

我想知道当一个设置为弱的属性在不是强可引用的情况下通过弧清除时,是否为指向该弱属性的关键路径注册了任何 KVO?这将是一个非常方便的功能,但我不知道目前是否发生这种情况。任何人都知道它是否可以,如果默认情况下不可以,它可以工作吗?

4

2 回答 2

11

你不能用 ARC 来做到这一点,但你可以通过使用 将一个对象与你的 iVar 关联来模拟这一点,objc_setAssociatedObject()当弱变量死亡时它将被释放。

@interface WeakObjectDeathNotifier : NSObject
@end
@implementation WeakObjectDeathNotifier
- (void)dealloc
{
    // the code that shall fire when the property will be set to nil
}
@end

您可以在非常复杂的通知器之上构建,使用NSNotificationCenter或仅使用自定义块,具体取决于您对特定 ivar 案例或其中许多案例的依赖程度。

于 2013-12-06T10:38:53.930 回答
0

运行时修饰符未与 KVO 集成

所以不行

于 2013-12-06T10:43:52.177 回答