2013-12-16 47 views
1

我想要繼承我想添加更多子視圖的UIView子類。因爲我改變了我的代碼視圖幀的財產,我想在這一觀點被調整我的子視圖來調整,所以我在我的initWithCoder:方法添加以下代碼:在UIView子類中註冊KVO,得到「觀察信息泄漏」警告

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

而在觀察法,我會手動重置視圖的框架。一切工作正常,但是當我把一些其他的視圖控制器和回遷,我得到這個消息:

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

那麼,如何才能解決這個問題?我確信這個觀察者並沒有被移除,但是這裏沒有任何東西。我該怎麼辦?

謝謝!

回答

2

您應該刪除所有添加的觀察者觀察者,所以不喜歡下面的代碼,

- (void)dealloc { 

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

我使用ARC,在dealloc中仍然是一種可能的選擇嗎? –

+1

也許你可以把它放在「 - (void)viewDidDisappear:(BOOL)animated」方法中,並在 - (void)viewDidAppear中添加觀察者:(BOOL)animated –

+1

是的,你可以像上面給出的那樣使用... – Venkat