当前位置:  开发笔记 > 编程语言 > 正文

调用addObserver和removeObserver方法的可能位置

如何解决《调用addObserver和removeObserver方法的可能位置》经验,为你挑选了1个好方法。

我有一个子视图向其父视图发送通知的情况.现在,我打电话给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];

谢谢.



1> Ben Gottlieb..:

实际上,这是个坏主意.当内存变低时,视图控制器可能会收到内存警告.此实例中的默认行为是清除视图(如果您当前不在屏幕上).在这种情况下,您可以第二次发送viewDidLoad消息(在内存事件之后,当您的视图由其导航控制器返回到屏幕上时.)因此,您将对同一对象进行两次注册,但只有一次删除(在其dealloc中)

更好的解决方案是设置一个标记表明您已注册,或者在您的init方法中注册.


仍然不清楚在这种情况下将removeObserver放在何处.
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有