我有一个情况下,子视图发送通知到其父视图。现在我打电话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