iPhone应用程序WillResignActive-如何通知当前UIView

iPhone应用程序WillResignActive-如何通知当前UIView,iphone,objective-c,uikit,Iphone,Objective C,Uikit,我想在iPhone锁定等情况下暂停游戏屏幕上的计时器。我的问题是通知当前UIView的最佳方法是什么,AppDelegate无法直接访问当前UIView?1)您的计时器可能不应由视图管理,而应由视图的控制器管理。计时器本身不是UI的固有部分,只有计时器的显示才是。(例如,如果要在删除视图后继续计时,会发生什么情况?) 2) 任何对象(包括视图或控制器)都可以独立地侦听适当的通知。例如,在视图控制器(或视图代码,如果选择该路线): 然后实现一个pauseTheTimer:方法来处理通知。(由于只有

我想在iPhone锁定等情况下暂停游戏屏幕上的计时器。我的问题是通知当前UIView的最佳方法是什么,AppDelegate无法直接访问当前UIView?

1)您的计时器可能不应由视图管理,而应由视图的控制器管理。计时器本身不是UI的固有部分,只有计时器的显示才是。(例如,如果要在删除视图后继续计时,会发生什么情况?)

2) 任何对象(包括视图或控制器)都可以独立地侦听适当的通知。例如,在视图控制器(或视图代码,如果选择该路线):

然后实现一个pauseTheTimer:方法来处理通知。(由于只有一个UIApplication对象,因此可以对该对象使用nil,如图所示。)

这种方法很好地将应用程序代理与视图和视图控制器解耦


(哦,不要忘了在卸载或解除分配视图时停止观察。否则可能会导致崩溃。)

由于我给它的名称,当发送willResignActive时,会自动调用该选择器吗,或者我必须在
application willresignactive
中手动发送通知吗?它将自动发生-您可以选择选择器(例如pauseTheTimer:),但关键部分是通知名称。查看UIApplication.h-您将看到一组通知,它们的名称与其委托方法重叠。列表的开头是注释“/”这些通知在调用等效的委托消息后发出“
    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(pauseTheTimer:)
                                             name:UIApplicationWillResignActiveNotification
                                           object:nil];