【问题标题】:Unsaved NSManagedObject life cycle after context save failure上下文保存失败后未保存的 NSManagedObject 生命周期
【发布时间】:2014-08-06 09:26:28
【问题描述】:
假设由于与数据本身无关的原因,我无法保存 NSManagedObjectContext。一个典型的例子是设备上没有足够的空间。
据我了解,NSManagedObjects 仍驻留在内存中,处于未保存状态。
以下是以下问题:
- 对象会发生什么?他们是否有突然被逐出记忆的风险,特别是当应用程序处于后台时?如果是,发生这种情况时是否有某种通知?
- 您如何管理此类事件或类似事件,而不是由程序本身引起的?
- 是否可以在 XCode 开发过程中模拟这种特殊行为(空间不足)?
【问题讨论】:
标签:
objective-c
core-data
【解决方案1】:
对象会发生什么?他们是否有突然被逐出记忆的风险,尤其是当应用程序处于后台时?如果是,发生这种情况时是否有某种通知?
对象不会从内存中被逐出。 应用程序如果在后台,则可以从内存中逐出。发生这种情况时,应用程序的所有对象也会消失。通知将遵循与普通应用生命周期通知相同的规则——那些由UIApplication 发布并作为回调发送给应用委托的规则。
您如何管理此类或类似的非程序本身的事件?
您无能为力。如果设备上没有空间,则无法保存数据。唯一真正的选择是,如果您有一些可以删除的其他已保存数据,以腾出一些空间。如果这不是一个选项,那么您就不走运了,因为没有地方可以放置这些未保存的数据。
在 XCode 开发过程中是否可以模仿这种特殊行为(空间不足)?
拿一个测试设备并用数据填充它,然后运行您的应用程序。