在UIView子类中注册KVO,得到“观察信息泄漏”警告

时间:2013-12-16 11:35:56

标签: ios objective-c uiview

我正在尝试子类UIView,我想在其中添加更多子视图。由于我在代码中更改了我的视图的框架属性,因此我希望在调整此视图大小时调整子视图的大小,因此我在initWithCoder:方法中添加了以下代码:

[self addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:nil];

在观察方法中,我将手动重置视图的帧。一切正常,但当我推动其他视图控制器并向后移动时,我收到了这条消息:

Observation info was leaked, and may even become mistakenly attached to some other object.

那么,我该如何解决这个问题呢?我肯定知道观察者没有被移除,但这里没有任何viewDidDisappear的东西。我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该删除所有添加的观察者的观察者,所以请执行以下代码,

- (void)dealloc {

    [self removeObserver:self forKeyPath:@"frame" context:NULL];
}