我有一个子视图向其父视图发送通知的情况.现在,我打电话给addObserver:
在viewWillAppear:
和removeObserver:
中viewWillDisappear:
.但是,我猜这是不正确的,因为viewWillAppear:
视图刷新时调用.
[[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];
谢谢.
实际上,这是个坏主意.当内存变低时,视图控制器可能会收到内存警告.此实例中的默认行为是清除视图(如果您当前不在屏幕上).在这种情况下,您可以第二次发送viewDidLoad消息(在内存事件之后,当您的视图由其导航控制器返回到屏幕上时.)因此,您将对同一对象进行两次注册,但只有一次删除(在其dealloc中)
更好的解决方案是设置一个标记表明您已注册,或者在您的init方法中注册.