簡體   English   中英

addobserver / removeobserver查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM