NSNotificationCenter addObserver не отвечает

В моем приложении (игре) я пытаюсь использовать NSNotificationCenter, чтобы приостановить и возобновить игру, когда нажата либо кнопка центра / дома, либо кнопка блокировки. Это код, который я использую:

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(pauseLayer:)
 name:UIApplicationWillResignActiveNotification
 object:self.view.layer.sublayers];

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(pauseLayer:)
 name:UIApplicationDidEnterBackgroundNotification
 object:self.view.layer.sublayers];

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(resumeLayer:)
 name:UIApplicationWillEnterForegroundNotification
 object:self.view.layer.sublayers];

Я экспериментировал с размещением его во многих разных местах, таких как viewDidLoad, viewDidAppear, initWithNibNameOrNil, но хотя все они вызываются, методы pauseLayer и resumeLayer никогда не вызываются, даже если это делает метод делегата приложения. Почему этот код не работает?

1 ответ

Решение

Изменить addObserver звонки и удаление self.view.layer.sublayers от object пары. измените это на nil,

РЕДАКТИРОВАТЬ: больше информации

Конечно. object парам говорит NSNotificationCenter уведомление какого объекта вы хотите наблюдать. Когда вы указываете self.view.layer.sublayers вы наблюдаете UIApplicationWillEnterForegroundNotification и др., отправленные только sublayers массив. Конечно, sublayers массив не отправляет это уведомление. Когда вы указываете object:nil Вы наблюдаете уведомление от любого объекта. Это уместно в этом случае. Если вы хотите указать объект, он будет [UIApplication sharedApplication],

Другие вопросы по тегам