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 に答える