【发布时间】:2011-10-21 01:17:57
【问题描述】:
如何从ARC 下的对象中删除观察者?我们是否只是添加观察者而忘记删除它?如果我们不再手动管理内存,我们该从哪里放弃观察?
例如,在视图控制器上:
[self.view addObserver:self
forKeyPath:@"self.frame"
options:NSKeyValueObservingOptionNew
context:nil];
以前,我会在视图控制器的dealloc 方法中调用removeObserver:。
【问题讨论】:
-
请注意,对 KVO .frame 来说这是一个非常糟糕的主意。正如 Apple 工程师在 StackOverflow 上在其他地方所写的那样,UIKit 的 frame 属性不符合 KVO。当它起作用时,它只是纯属偶然。
-
您的 keyPath 不应该是
@"frame"而不是@"self.frame"?
标签: ios cocoa-touch key-value-observing automatic-ref-counting