![](/img/trans.png)
[英]Possible locations to call addObserver and removeObserver methods
[英]addobserver / removeobserver query
是否可以使用-removeObserver:
first然后調用-addObserver:
同名? 或者-addObserver:
是一個規則-addObserver:
首先在-removeObserver:
之前-removeObserver:
?
我嘗試使用OS 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];
}
原因是為了防止兩個具有相同selectorName
方法的觀察者被調用兩次,假設如果發出了內部-viewDidLoad
和內存警告,則再次調用-setObserver
方法。
另外,我需要在-removeObserver:
期間調用-dealloc
嗎?
如果您正在調用兩次-selectorName
,那么您的代碼可能還有其他一些問題。 即使Cocoa在刪除尚未添加的觀察者方面優雅,我也不會這樣做。
用戶tonklon在評論中說,你應該刪除-viewDidUnload
中的觀察者。 至於你的最后一個問題,在-dealloc
刪除觀察者也是合理的,盡管構造代碼是一種很好的做法,例如刪除觀察者之類的事情發生在確定的時間,而不是作為內存管理的副作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.