【问题标题】:Does adding a KVO observer to self cause a memory leak?向 self 添加 KVO 观察者会导致内存泄漏吗?
【发布时间】:2014-05-18 09:48:49
【问题描述】:

在 nsobject 中,你有一个属性“keyPath”,你想观察它自己并使用

[self addObserver:self forKeyPath:keyPath options:NSKeyValueObservingOptionNew context:nil];

上述行会导致保留周期吗?

我提出这个问题是因为我想知道它是否是重写一堆 setter 函数的可行替代方案。

【问题讨论】:

    标签: objective-c memory-leaks key-value-observing kvc retain-cycle


    【解决方案1】:

    来自docs

    既不保留接收者,也不保留观察者。

    【讨论】:

    • 该死的错过了那部分。 “讨论既不保留接收者,也不保留观察者。”
    • 吸取了教训。我犯了一个错误,即在单击函数调用并按住 option/alt 时只阅读弹出框文本,如果我执行 AppleDocs html 操作,我会看到会这样说的讨论文本。很抱歉给您带来麻烦。
    • 因为 Apple 不认真对待永久链接,所以信息仍然存在,但已移至此处:developer.apple.com/library/archive/documentation/Cocoa/… 注意:键值观察 addObserver:forKeyPath:options:context: 方法不维护对观察对象、被观察对象或上下文的强引用。您应确保根据需要维护对观察对象和观察对象以及上下文的强引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2021-03-23
    • 2021-09-25
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多