我有一個情況下,子視圖發送通知到其父視圖。現在我打電話addObserver:
在viewWillAppear:
和removeObserver:
在viewWillDisappear:
。但是,我猜這是不正確的,因爲viewWillAppear:
視圖刷新時調用。可能的位置調用addObserver和removeObserver方法
[[NSNotificationCenter defaultCenter] addObserver: (id)observer selector: (SEL)aSelector name: (NSString *)aName object: (id)anObject];
[[NSNotificationCenter defaultCenter] removeObserver: (id)observer name: (NSString *)aName object: (id)anObject];
謝謝。
但是,當收到內存警告時,viewDidUnload將被調用,但不是dealloc,當導航回到這個viewcontroller時,viewDidLoad會再次被調用,然後,您的通知再次註冊。 – ZYiOS 2011-08-22 02:36:36
你說得對。這篇文章很舊,所以忽略它。重要的是平衡註冊和取消註冊通話。使用viewDidLoad和viewDidUnload,或者viewDidLoad(帶有標誌)和dealloc,或者使用init和dealloc來註冊和取消註冊您的通知。請參閱Ben Gottlieb對相關信息的評論。 – Mustafa 2011-08-22 06:16:12