【发布时间】:2023-03-18 00:26:01
【问题描述】:
我想知道当一个设置为弱的属性在它不是强可引用的情况下通过弧清除时,是否有任何 KVO 注册为指向该弱属性的关键路径?这将是一个非常方便的功能,但我不知道目前是否发生这种情况。任何人都知道它是否可以,如果默认情况下它不可以工作吗?
【问题讨论】:
标签: objective-c automatic-ref-counting key-value-observing
我想知道当一个设置为弱的属性在它不是强可引用的情况下通过弧清除时,是否有任何 KVO 注册为指向该弱属性的关键路径?这将是一个非常方便的功能,但我不知道目前是否发生这种情况。任何人都知道它是否可以,如果默认情况下它不可以工作吗?
【问题讨论】:
标签: objective-c automatic-ref-counting key-value-observing
你不能用 ARC 来做到这一点,但你可以通过使用 objc_setAssociatedObject() 将一个对象与你的 iVar 关联来模拟这一点,当弱变量死亡时它将被释放。
@interface WeakObjectDeathNotifier : NSObject
@end
@implementation WeakObjectDeathNotifier
- (void)dealloc
{
// the code that shall fire when the property will be set to nil
}
@end
您可以使用NSNotificationCenter 或仅使用自定义块在非常复杂的通知器之上构建,具体取决于您对特定 ivar 案例或许多案例的依赖程度。
【讨论】:
运行时修饰符未与 KVO 集成
所以没有
【讨论】: