Вопрос

Привет, ребята, У меня еще одна проблема.На этот раз с помощью NSNotificationCenter.Сейчас он выходит из строя, но несколько дней назад, когда я добавил уведомление, оно работало должным образом.За это время я добавил кое-какой код, который не имеет к этому никакого отношения...

У меня есть примерно плитки размером 10х10.Каждая плитка добавляет себя в качестве наблюдателя сразу после ее создания:

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

И в моем классе player каждый раз, когда прыжок заканчивается, я отправляю уведомление со следующим кодом:

if (self.postNotifications == YES) {
    //Also post the notification for all the Tiles.
    [[NSNotificationCenter defaultCenter] postNotificationName:@"TestNot" object:self];
}

Если я использую NSLog () в плитках, я вижу, что уведомление получают примерно 3 или 4 плитки.И после этого приложение завершает работу с EXC_BAD_ACCESS.В нем говорится objc_msgSend() selector name: playerJumped.Но я не понимаю, почему.Я вижу, что это работает с первым, после чего он выходит из строя.В чем здесь моя ошибка?Не могли бы вы, пожалуйста, помочь мне!Сандро

Редактировать:Есть ли проблема, потому что уведомление получено примерно 100 объектами?

Это было полезно?

Решение

Ваш объект плитки был освобожден, но он все еще зарегистрирован в уведомлении, чтобы получать уведомления. Попробуйте добавить точку останова на методе Tile -dealloc, если это не то, что вы ожидаете.

Другие советы

У меня самого была такая же проблема.Добавление этого в класс решило проблему

- (void) dealloc 
{

  [[NSNotificationCenter defaultCenter] removeObserver:self];

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top