当iPhone被锁定时,我想在我的游戏屏幕上暂停一个计时器等等。我的问题是通知当前UIView的最佳方法是什么,AppDelegate无法直接访问它?
答案 0 :(得分:3)
1)您的计时器可能不应由视图管理,而是由视图的控制器管理。计时器本身不是UI的固有部分,只有计时器的显示。 (例如,如果您希望在删除视图后继续使用计时器,会发生什么情况?)
2)任何对象(包括视图或控制器)都可以独立监听适当的通知。例如,在视图控制器中(或视图代码,如果您选择转到该路径):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(pauseTheTimer:)
name:UIApplicationWillResignActiveNotification
object:nil];
然后实现一个pauseTheTimer:方法来处理通知。 (由于只有一个UIApplication对象,因此可以使用nil作为对象,如图所示。)
这种方法很好地将您的app委托与视图和视图控制器分离。
(哦,不要忘记在卸载或取消分配视图时停止观察。如果不这样做会导致崩溃。)