3

这只是一个理论问题。它源于我的应用程序中的一个真正问题,但我从应用程序中重新设计了这个问题。但问题仍然存在:

如果在我的应用程序委托中我将我的单例对象写入磁盘,applicationWillTerminate:但也用于在某些视图控制器NSNotificationCenter中调用,这将首先发生?我的数据会被写入单例,然后单例被写入磁盘,然后应用程序终止吗?或者会发生相反的情况,单例被序列化,然后单例更新(更糟),或者如果序列化时间太长,应用程序会在一定时间后终止(更糟!)?updateSingletonDataUIApplicationWillTerminateNotification

我想这表明我对跳板的胆量缺乏了解......感谢任何可以在这里阐明的人。

4

2 回答 2

4

这里有几点需要注意:

  1. 只有 Apple 知道这些将发生的顺序,因为他们编写了执行此操作的代码。

  2. 您不应该关心这些将发生的顺序。如果您确实关心,那么您的代码设计得很糟糕。

实际上,您可以检查发生的顺序 - 对于您的特定设备,对于您的特定 iOS 版本等。

但实际上,您不应该关心它们发生的顺序。从它的声音来看,您应该在保存之前启动视图控制器以写入数据applicationWillTerminate:,或者让视图控制器在写入数据后处理保存.

于 2012-02-16T00:15:04.627 回答
1

这个问题很老,@mattjgalloway 的回答在代码质量方面是正确的,但为了知识起见,我刚刚在文档中看到通知是在调用方法发布的(强调我的):UIApplicationDelegate

调用此方法后,应用程序还会发布 UIApplication​Will​Terminate 通知,让感兴趣的对象有机会响应转换。

https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623111-applicationwillterminate

于 2017-03-15T13:26:56.737 回答