Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在应用程序会话之间维护对象?_Ios_Serialization_Nsuserdefaults - Fatal编程技术网

Ios 如何在应用程序会话之间维护对象?

Ios 如何在应用程序会话之间维护对象?,ios,serialization,nsuserdefaults,Ios,Serialization,Nsuserdefaults,我目前正在使用单例实例访问和维护应用程序中的各种NSObject。 例如,我有: VariableStores,用于维护多个对象,例如currentUser(自定义NSObject)、lastLocation(CLLocation)等 TaskManager,包含一个NSMutableArray,其中的NSOperations操作失败,以便以后重新执行(例如上传失败的Instagram) 如果我关闭应用程序,单例实例将被销毁,并且: -必须从服务器端(例如currentUser)检索某些数据

我目前正在使用单例实例访问和维护应用程序中的各种
NSObject
。 例如,我有:

  • VariableStores,用于维护多个对象,例如currentUser(自定义
    NSObject
    )、lastLocation(
    CLLocation
    )等

  • TaskManager,包含一个
    NSMutableArray
    ,其中的
    NSOperations
    操作失败,以便以后重新执行(例如上传失败的Instagram)

如果我关闭应用程序,单例实例将被销毁,并且: -必须从服务器端(例如currentUser)检索某些数据,这会增加持续时间长度 -某些数据无法从服务器端检索,例如TaskManager中的
NSOperation
(因为它们仅在本地管理)

因此,我想更进一步,即使应用程序完全死掉,也要维护这种对象

我应该把什么看作是一个好的实践?将对象序列化为
NSUserDefaults
并反序列化?还有其他最佳实践吗


在序列化的情况下,
-application中的序列化对象将终止
委托,并在singleton的适当的-init方法中反序列化它们(在
appDidFinishLaunching
中实例化)是否可以接受?

单例模式的思想只是在控制器之间传输数据,而不必担心细节

您需要做的是保存应用程序的数据

如果您发现需要存储的数据对于plist来说有点大,那么可以使用核心数据。。或者您可以使用sqlite,但这会给您编写大量sql语句带来一些麻烦

或者您可以使用常规plist或nsUserDefaults(我不喜欢这个选项),但如果数据太多,则速度会有点慢。。
当应用程序转到后台或终止时,您可以保存此数据

你好,Mohamed,NSUserDefaults相当慢,但由于它只是在应用程序启动时出现,我认为它是可以容忍的。我最终使用了NSUserDefault和序列化对自定义对象进行编码,目前看来效果不错。感谢您的反馈:)太好了,如果您觉得我的答案对您有帮助,请随时推广:)