当应用程序终止时,向UIView发送什么消息?

时间:2010-07-05 08:55:37

标签: objective-c iphone

我正在尝试查找可以覆盖的消息,然后将更改保存到我的应用程序中。

在MainWindow.xib上我放置了一个UIView并将其类(在界面构建器中)设置为我的自定义视图TouchDrawView。

在TouchDrawView中,我有一堆用于处理触摸事件的代码和两个跟踪这些触摸事件的数组。

我的应用程序由AppDelegate启动,但它没有引用此TouchDrawView。它只是启动应用程序。

我想要做的是在应用程序终止时保存我的2个数组 - 我可以在TouchDrawView中执行此操作,但我不知道当整个应用程序即将终止时,这个UIView会发送什么消息而我不能在AppDelegate中执行它,因为它没有对2数组或自定义UIView的引用

2 个答案:

答案 0 :(得分:1)

当应用程序终止时,

UIView个实例将不会发送任何消息。

还有另一种简单的方法可以获得应用状态更改的通知:通知。您可以注册通过[NSNotificationCenter defaultCenter]发送的通知。

对于旧版iPhone OS,有一个UIApplicationWillTerminateNotification。从iOS 4开始,您还应该听取UIApplicationDidEnterBackgroundNotification,以准备终止。

答案 1 :(得分:0)

简短而无益的答案是,当应用程序终止时,UIView不会发送消息。

你需要考虑模型 - 视图 - 控制器,因为这就是Cocoa和Cocoa Touch的设计方式。在这三个中,如果消息被直接发送给它,那么它就是控制器。在您的情况下,UIViewController会与您的观点对话。

坏消息是那里也没有这样的消息。

应用程序关闭,而不是单独的屏幕/视图。

有(至少)两种方法可以做你想做的事。首先,您可以在视图控制器发布时保存它的状态。 (这种感觉对我来说不对。)

我在我的应用程序中执行此操作的方法是在applicationWillTerminate中侦听UIApplicationDelegate消息并遍历视图层次结构并保存每个视图控制器的状态。当系统启动时,你可以做相反的事情。我在博客上发表了here