在我的应用程序中,我有 Singleton 对象,它应该通过应用程序启动来保存其状态。所以我需要以某种方式保存它。
我只看到两个选项:1)将其保存在应用程序终止(加上,也许,去后台);2)每次更改任何属性时都保存它。
第一个选项看起来很糟糕,因为应用程序可能会被杀死,例如,由于某些错误、内存限制或设备断电(电池电量不足)。所以我希望状态不会被保存。
第二个选项需要关于每次更改的手动通知,或 KVO + 观察每个属性。
似乎我在这里做错了什么。也许,你可以给我一些建议或者有一些众所周知的模式(我试过谷歌,但没有发现什么特别的)。
更新:
是的,有NSUserDefaults
,但是为了提高它的可用性(不仅仅是键值)我会编写包装方法,所以我将以同样的问题结束(手动编码的行)。
更新2:
CoreData
对我来说也是一个不好的选择:只存储一个对象+插入那里还需要更多的代码行。
更新3:
这不是关于“如何保存”的问题。这是关于“如何自动调用此保存(或使用更少的编码)”。因此,NSUserDefault
我们需要手动将每个属性实现为包装器。还从每个属性NSCoding
调用save
或发布通知(从一个地方捕捉和保存)。