在我的应用程序(游戏)中,我试图使用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/

10-12 12:54