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

如果在我的应用程序委托中,我将我的单例对象写成磁盘 applicationWillTerminate: 但也使用 NSNotificationCenter 打电话 updateSingletonData 之上 UIApplicationWillTerminateNotification 在某些视图控制器中,哪个会首先发生?我的数据会写信给单例,然后将单例写入磁盘,然后应用程序终止?还是反向发生,单身人士被序列化和 然后 单身人士更新(更糟),或者如果序列化花费太长(更糟!),则应用程序会在一定时间后终止?

我想这表明我对跳板的胆量缺乏理解……感谢任何可以在这里亮着一些灯的人。

有帮助吗?

解决方案

这里有几件事:

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

  2. 您不应该关心这些订单会发生。如果您确实在乎,那么您已经严重设计了代码。

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

但实际上,您不应该关心它们发生的顺序。从声音中,您应该向视图控制器开火以在保存之前写入数据 applicationWillTerminate:, ,或让视图控制器写入数据后保存保存。

其他提示

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

调用此方法后, ,该应用程序还发布了UIAPPLICATION,将终止通知,以使感兴趣的对象有机会响应过渡。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top