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]
,