objective-c - NSNotification 没有到达所有观察者

标签 objective-c ios cocoa-touch uiviewcontroller nsnotifications

我将 NSNotification 用于一组特定的事件。我有三个 View ,因此我在 View 1 上有一个“添加”按钮,单击它可以让我从 View 1 导航到 View 2 再到 View 3,然后再返回到 View 1。

1->2->3->1

如果单击 View 1 上的 ADD 按钮,我使用 NSNotification 推送 View Controller ,并根据 View 1 发布的通知分别更新其他 View 。

当通知从 View 1 发送时,只有 View 2 会收到它。 View 3 没有。

这怎么可能?观察者的代码在 View 2 和 View 3 上完全相同。

这是在 View 2 和 View 3 中添加观察者的代码:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(didPressAdd:) 
                                             name:@"DidAddNotification" 
                                           object:nil];

我还在 dealloc() 函数中正确删除了它们。

最佳答案

使用导航 Controller 导航回 1 将删除 2 和 3。因此在 dealloc 中,添加一条日志,说明特定 Controller 已停止监听。您会看到监听器正在被释放,之后它不会再监听通知。更新了 sample发送返回通知。

关于objective-c - NSNotification 没有到达所有观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308657/

相关文章:

objective-c - ios:更改 UIImage 的颜色

javascript - NativeAppEventEmitter 返回未定义

html - 将嵌套的粗体斜体 HTML 标签转换为 NSAttributedString

ios - iOS 7和滚动条颜色

ios - 什么是正式协议(protocol)对象

iphone - 在 iPhone 的 TextView 中显示数组值

iphone - 如何获得用户对使用位置信息的持续同意

iphone - Objective-C/iPhone 内存管理静态变量

iphone - 如何在 UINavigationBar 上的任意位置设置自定义按钮?

iphone - ParentViewController 始终是导航 Controller 吗?