Способы отладки проблем NSNotificationCenter? - PullRequest
8 голосов
/ 23 января 2010

У меня возникли проблемы, когда мое опубликованное уведомление:

[[NSNotificationCenter defaultCenter] postNotificationName:@"MobileProviderChanged" 
                                                    object:self.selectedProviderID];

Мой наблюдатель не пойман в ловушку:

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

Точно такой же наблюдатель правильно работает в другом ViewController.

Есть ли какие-либо советы по методам отладки, чтобы узнать, какие сообщения действительно отправляются в defaultCenter?

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

У меня такая же проблема. Решение довольно простое, но не очевидное:

Убедитесь, что наблюдатель все еще существует во время доставки NSNotification.

1 голос
/ 23 января 2010

Чем больше я исследую этот вопрос, тем больше интересно, если моя проблема в том, что отправляющий viewcontroller находится на другая нить, чем наблюдение ViewController.

Неправильная многопоточность почти наверняка является источником вашей проблемы. Однако уведомления по-прежнему следует отправлять и получать.

В частности, уведомление будет получено в том потоке, в котором оно было отправлено. Поскольку вы упоминаете, что в ответ на уведомление вы вмешиваетесь в контроллеры представлений, вполне вероятно, что вы делаете что-то в неосновном потоке, который недоволен UIKit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...