在我的应用程序(游戏)中,我试图使用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方法,它们也从未被调用。为什么此代码不起作用?
最佳答案
更改addObserver
调用,并从self.view.layer.sublayers
参数中删除object
。将其更改为nil
。
编辑:更多信息
当然。 object
参数告诉NSNotificationCenter
您要观察哪个对象的通知。当您指定self.view.layer.sublayers
时,您将观察到UIApplicationWillEnterForegroundNotification
数组仅发送的sublayers
等。当然,sublayers
数组不会发送此通知。当指定object:nil
时,您正在观察来自任何对象的通知。在这种情况下,这是适当的。如果要指定对象,则为[UIApplication sharedApplication]
。
关于ios - NSNotificationCenter addObserver没有响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8235630/