【问题标题】:Advice: Should I consider [NSManagedObjectContext reset] in low memory conditions?建议:我应该在内存不足的情况下考虑 [NSManagedObjectContext reset] 吗?
【发布时间】:2011-08-13 15:56:37
【问题描述】:

当我收到内存不足警告时,我应该考虑在我的 NSManagedObjectContext 上调用 reset 吗?使任何指向 NSManagedObject 的指针无效有点困难,但如果它是正确的做法,我会处理它!

或者核心数据库是否会排除NSManagedObject对象以减少其活动内存大小?

我应该提到,这个上下文是在 App Delegate 中创建的,因此通常存在于整个应用程序生命周期中。我在后台线程中也有上下文,但是当线程结束时这些会得到 dealloc'd()。

【问题讨论】:

    标签: iphone objective-c ios core-data memory-management


    【解决方案1】:

    Core Data 会监听内存不足的警告,并会尝试通过清除缓存、在它认为可能的地方排除对象等等来采取行动。

    在我看来,这是使用 Core Data 而不是滚动您自己的对象持久层的重要原因之一。

    【讨论】:

    • 谢谢保罗,这正是我所希望的!获取有关 Core Data 的详细信息可能有点困难(不仅仅是使用示例)。
    • +1 我同意。内存管理是 Core Data 的一大优势。
    • 对我来说不幸的是,当使用 NSFetchedResultsController 时收到内存不足警告时,它似乎并没有错误地输出数据......正确清除缓存和错误对象的唯一方法似乎是通过 managedObjectContext 上的重置
    • @TheCodingArt 如果它没有对您造成影响,Core Data 认为它不能这样做。你有没有在你知道可能有问题的对象上打电话给refreshObject:mergeChanges:NO?我知道这在某种程度上是手动完成的,但它可能比reset 的核选项更好。
    • 是的,这是我尝试的第一条路线,但它最终引入了比它值得的问题更多的问题(尽管我会说我没有适当的实施机制)。
    猜你喜欢
    • 2012-06-10
    • 2011-08-23
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多