在我的应用程序(游戏)中,我正在尝试使用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永远不会被调用,即使应用委托方法有效。为什么这段代码不起作用?
答案 0 :(得分:4)
更改addObserver
来电并从self.view.layer.sublayers
参数中删除object
。将其更改为nil
。
编辑:更多信息
不确定。 object
参数告诉NSNotificationCenter
您想要观察哪个对象的通知。当您指定self.view.layer.sublayers
时,您只会观察UIApplicationWillEnterForegroundNotification
数组发送的sublayers
等。当然,sublayers
数组不会发送此通知。指定object:nil
时,您正在观察来自任何对象的通知。在这种情况下这是合适的。如果要指定对象,则为[UIApplication sharedApplication]
。