NSNotificationCenter addObserver没有响应

时间:2011-11-23 00:01:21

标签: ios nsnotifications 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 个答案:

答案 0 :(得分:4)

更改addObserver来电并从self.view.layer.sublayers参数中删除object。将其更改为nil

编辑:更多信息

不确定。 object参数告诉NSNotificationCenter您想要观察哪个对象的通知。当您指定self.view.layer.sublayers时,您只会观察UIApplicationWillEnterForegroundNotification数组发送的sublayers等。当然,sublayers数组不会发送此通知。指定object:nil时,您正在观察来自任何对象的通知。在这种情况下这是合适的。如果要指定对象,则为[UIApplication sharedApplication]