1

在我的应用程序(游戏)中,当按下中心/主页或锁定按钮时,我正在尝试使用 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 永远不会被调用,即使应用程序委托方法确实如此。为什么这段代码不起作用?

4

1 回答 1

4

更改addObserver调用并self.view.layer.sublayersobject参数中删除。将其更改为nil.

编辑:更多信息

当然。object参数告诉NSNotificationCenter您要观察哪个对象的通知。当您指定时,self.view.layer.sublayers您正在观察UIApplicationWillEnterForegroundNotificationet al 仅由sublayers数组发送。当然,sublayers阵列不会发送此通知。当您指定时,object:nil您正在观察来自任何对象的通知。这在这种情况下是合适的。如果你想指定一个对象,它会是[UIApplication sharedApplication].

于 2011-11-23T00:07:53.627 回答