在UIViewController中未收到NSNotification,其视图是UIScrollview的子视图

时间:2011-02-18 15:30:50

标签: iphone ios4 uiviewcontroller nsnotifications nsnotificationcenter

我正在尝试将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之前看到过这样的事情?

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

我猜视图控制器已取消分配。在以编程方式创建视图控制器时,不保留视图控制器是一个常见的错误。

答案 1 :(得分:1)

如果您确定观察设置正确,我唯一的解释就是没有收到任何通知,即在发送任何通知之前取消分配控制器。

NSNotification机制既不依赖于视图层次结构也不依赖于线程。如果你有一个(生活)对象已被设置为观察者,它肯定会收到通知。