NSNotification не достигает всех наблюдателей - PullRequest
3 голосов
/ 10 июня 2011

Я использую NSNotification для определенного набора событий. У меня есть три вида, так что у меня есть кнопка «ДОБАВИТЬ» в представлении 1 и щелчок, который заставляет меня перейти от представления 1 к представлению 2 к представлению 3 и снова к представлению 1.

* +1004 * 1-> 2-> 3-> 1

Я использую NSNotification s, чтобы подтолкнуть контроллер представления, если нажата кнопка ADD в представлении 1, и я обновляю другие представления соответственно, основываясь на уведомлении, опубликованном представлением 1.

Когда уведомление отправляется из представления 1, только представление 2 получает его. Вид 3 нет.

Как это возможно? Код для наблюдателей точно такой же, как на представлении 2 и представлении 3.

Это код для добавления наблюдателей в представлении 2 и представлении 3:

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

Я также удаляю их в функции dealloc().

Ответы [ 2 ]

3 голосов
/ 10 июня 2011

При возврате к 1 с использованием контроллера навигации удаляются 2 и 3. Поэтому в dealloc добавьте журнал, в котором говорится, что конкретный контроллер прекратил прослушивание.Вы увидите, что слушатель освобождается, после чего он не будет слушать уведомления.Обновлен sample для отправки уведомления о возврате.

1 голос
/ 10 июня 2011

Это потому, что viewDidLoad и viewWillAppear: вызываются после отправки уведомления.Вместо этого установите его в initWithNibName:bundle: (если вы используете файлы xib) или в другом методе init, если вы этого не сделаете (например, initWithCoder:), предполагая, что вы где-то создали контроллер.Если вы не включили контроллер, вы также не сможете прослушивать уведомления внутри него.

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