我正在尝试查找可以覆盖的消息,然后将更改保存到我的应用程序中。
在MainWindow.xib上我放置了一个UIView并将其类(在界面构建器中)设置为我的自定义视图TouchDrawView。
在TouchDrawView中,我有一堆用于处理触摸事件的代码和两个跟踪这些触摸事件的数组。
我的应用程序由AppDelegate启动,但它没有引用此TouchDrawView。它只是启动应用程序。
我想要做的是在应用程序终止时保存我的2个数组 - 我可以在TouchDrawView中执行此操作,但我不知道当整个应用程序即将终止时,这个UIView会发送什么消息而我不能在AppDelegate中执行它,因为它没有对2数组或自定义UIView的引用
答案 0 :(得分:1)
UIView
个实例将不会发送任何消息。
还有另一种简单的方法可以获得应用状态更改的通知:通知。您可以注册通过[NSNotificationCenter defaultCenter]
发送的通知。
对于旧版iPhone OS,有一个UIApplicationWillTerminateNotification
。从iOS 4开始,您还应该听取UIApplicationDidEnterBackgroundNotification
,以准备终止。
答案 1 :(得分:0)
简短而无益的答案是,当应用程序终止时,UIView
不会发送消息。
你需要考虑模型 - 视图 - 控制器,因为这就是Cocoa和Cocoa Touch的设计方式。在这三个中,如果消息被直接发送给它,那么它就是控制器。在您的情况下,UIViewController
会与您的观点对话。
坏消息是那里也没有这样的消息。
应用程序关闭,而不是单独的屏幕/视图。
有(至少)两种方法可以做你想做的事。首先,您可以在视图控制器发布时保存它的状态。 (这种感觉对我来说不对。)
我在我的应用程序中执行此操作的方法是在applicationWillTerminate
中侦听UIApplicationDelegate
消息并遍历视图层次结构并保存每个视图控制器的状态。当系统启动时,你可以做相反的事情。我在博客上发表了here。