5
可以先使用-removeObserver:
,然後用-addObserver:
調用同名嗎?或者是在-removeObserver:
之前先有-addObserver:
?addobserver/removeobserver查詢
我試過它使用操作系統4.0,它似乎確定(沒有崩潰,警告......等)。
-(void) setObserver
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:OBSERVER_NAME object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector: @selector(selectorName)
name:OBSERVER_NAME
object:nil];
}
的原因是爲了防止兩個觀察者與被調用兩次假設-setObserver
方法,如果再次調用同一selectorName
方法其內部-viewDidLoad
,併發出了內存不足的警告。
另外,在-dealloc
期間是否需要調用-removeObserver:
?
+1好問題。 我不知道是否保存刪除之前未註冊的Observer,但我知道在釋放之前必須刪除觀察者。 對於您的情況,您也可以刪除viewDidUnload中的觀察者。這就是這個方法的作用:平衡在loadView和viewDidLoad中所做的所有調用。 – tonklon 2010-07-07 13:32:40