UiapplicationWillTerminate:NSNOTIFICAYCENTER与应用程序代表
-
25-10-2019 - |
题
这只是一个理论问题。它是由于我的应用程序中的一个真正问题而诞生的,但是我重新设计了应用程序中的问题。但是问题仍然存在:
如果在我的应用程序委托中,我将我的单例对象写成磁盘 applicationWillTerminate:
但也使用 NSNotificationCenter
打电话 updateSingletonData
之上 UIApplicationWillTerminateNotification
在某些视图控制器中,哪个会首先发生?我的数据会写信给单例,然后将单例写入磁盘,然后应用程序终止?还是反向发生,单身人士被序列化和 然后 单身人士更新(更糟),或者如果序列化花费太长(更糟!),则应用程序会在一定时间后终止?
我想这表明我对跳板的胆量缺乏理解……感谢任何可以在这里亮着一些灯的人。
解决方案
这里有几件事:
只有苹果知道这些顺序会发生,因为他们编写了执行此操作的代码。
您不应该关心这些订单会发生。如果您确实在乎,那么您已经严重设计了代码。
实际上,您可以去检查发生的顺序 - 对于特定的设备,特定的iOS版本,等等。
但实际上,您不应该关心它们发生的顺序。从声音中,您应该向视图控制器开火以在保存之前写入数据 applicationWillTerminate:
, ,或让视图控制器写入数据后保存保存。
其他提示
这个问题是旧的,@mattjgalloway的回答在代码质量方面是正确的,但是,为了知识,我只是在文档中看到通知已发布 后 这 UIApplicationDelegate
方法称为(强调我的):
调用此方法后, ,该应用程序还发布了UIAPPLICATION,将终止通知,以使感兴趣的对象有机会响应过渡。
https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623111-ApplicationWillTerminate