• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 我应该把 NSNotification 中的 removeObserver 放在哪里

[复制链接]
菜鸟教程小白 发表于 2022-12-13 08:07:07 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有三个 viewControllers,我正在尝试从 viewController 3 向 viewController 1 和 2 发送通知。我认为最好的方法是使用 NSNotification。到目前为止,这是我所拥有的:

在 C 类中 - 发布通知

[[NSNotificationCenter defaultCenter] postNotficationName"Updated "object:self];

B类

在 A 类和 B 类中 - 首先注册通知

// viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selectorselector(handleUpdate name"Updated" object:nil];

-(void)handleUpdateNSNotification *)notification {
    NSLog(@"recieved");
}

到目前为止,这有效。但是当我在 A 类和 B 类中注销它时:

- (void)viewWillDisappearBOOL)animated {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

handleUpdate 方法没有被调用。所以明显的问题是当我 removeObserver's 获取 notification 时。

我的问题是,如果到目前为止我所做的一切都是正确的,为什么当我删除 removeObserver 时它不起作用?如果不正确,我在哪里可以removeObserver's



Best Answer-推荐答案


你所做的一切都是正确的。这就是通知的工作方式。 如果您的 A、B 类总是需要处理更新,您将不会删除观察者。 因为您在 viewDidLoad 中添加了“addObserver”。这意味着你只 addObserver 一次。 正常的错误是你在“viewWillAppear”或“viewDidAppear”中添加了“addObserver”,它会在类中添加不止一次的观察者。然后,您必须在 viewDidDisappear 中删除Observer。

关于ios - 我应该把 NSNotification 中的 removeObserver 放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905896/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap