我正在尝试将myViewController订阅到自定义NSNotification。 heirarchy的观点看起来像这样:
window
- rootViewController.view
- scrollView
- myViewController.view
通知从rootViewController视图中的按钮发送到[NSNotificationCenter defaultCenter]。 rootViewController监听通知并对它做出响应。
我在myViewController中有相同的“监听”代码,但由于某种原因它没有收到通知。如果它是应用程序的一部分,它应该收到通知,对吗?我在myViewController的initWithNibName方法中有一个调试消息,所以我知道它正在订阅通知。我甚至尝试让myViewController通过将通知名称设置为nil来监听所有通知。例如:
NSLog(@"main view controller initialized");
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarVisibilityChanged:) name:nil object:nil];
但也没有运气。有没有人在NSNotifications之前看到过这样的事情?
有什么想法吗?
谢谢!
答案 0 :(得分:4)
我猜视图控制器已取消分配。在以编程方式创建视图控制器时,不保留视图控制器是一个常见的错误。
答案 1 :(得分:1)
如果您确定观察设置正确,我唯一的解释就是没有收到任何通知,即在发送任何通知之前取消分配控制器。
NSNotification
机制既不依赖于视图层次结构也不依赖于线程。如果你有一个(生活)对象已被设置为观察者,它肯定会收到通知。