【问题标题】:Does kvo happen when a weak property is set to nil by ARC? [duplicate]当弱属性被 ARC 设置为 nil 时会发生 kvo 吗? [复制]
【发布时间】:2023-03-18 00:26:01
【问题描述】:

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

【问题讨论】:

标签: objective-c automatic-ref-counting key-value-observing


【解决方案1】:

你不能用 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 案例或许多案例的依赖程度。

【讨论】:

  • 不错的技巧,感谢您的想法!
【解决方案2】:

运行时修饰符未与 KVO 集成

所以没有

【讨论】:

    猜你喜欢
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多