2

我正在尝试将 myViewController 订阅到自定义 NSNotification。视图层次结构如下所示:


window
   - rootViewController.view
      - scrollView
          - myViewController.view

通知正在从 rootViewController 视图内的按钮发送到 [NSNotificationCenter defaultCenter]。rootViewController 监听通知并对其做出响应。

我在 myViewController 中有完全相同的“监听”代码,但由于某种原因它没有收到通知。如果它是应用程序的一部分,它应该会收到通知,对吗?我在 myViewController 的 initWithNibName 方法中有一条调试消息,所以我知道它正在订阅通知。我什至尝试通过将通知名称设置为 nil 来让 myViewController 监听所有通知。例如:


NSLog(@"main view controller initialized");

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarVisibilityChanged:) name:nil object:nil];

但那里也没有运气。有没有人见过这样的事情发生在 NSNotifications 之前?

有任何想法吗?

谢谢!

4

2 回答 2

4

我猜视图控制器已被释放。以编程方式创建视图控制器时不保留视图控制器是一个常见错误。

于 2011-02-18T15:47:59.157 回答
1

如果您确定观察设置正确,我对未收到任何通知的唯一解释是,控制器在发送任何通知之前已被释放。

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

于 2011-02-18T15:46:21.460 回答