CoreData提示良好的实现

时间:2014-11-23 10:23:57

标签: ios objective-c iphone core-data

我们的应用程序大量使用CoreData来处理和使用我们的应用程序中的数据。 现在我想让这个过程更加稳定。我们系统的问题始于iOS 7,并且似乎在iOS 8上更为广泛。所以我希望进行一些重构。我们有很多用户,我使用BugTracker进行崩溃分析。由于我们使用CoreData,我看到了很多这些:

Object's persistent store is not reachable from this NSManagedObjectContext's coordinator 
---
Attempt to allocate 1048576 bytes for NS/CFData failed
---
SIGSEGV

我正在使用CoreData和他们的示例中提出的类似Apple的CoreDataController。使用2个托管对象上下文为background和main。

这是由SharedInstance控制器启动的。

是否有任何框架或页面具有更多崩溃证明CoreData示例。所以要明确的是,它为100.000+用户运行我们的系统,但受影响的所有用户中最多的崩溃(15%)正在经历与CoreData操作的崩溃。那么我怎样才能最好地消除它们呢?

1 个答案:

答案 0 :(得分:0)

您可能已经知道CoreData本身并不是线程安全的。因此,如果您在不同的线程上使用数据库,则可能需要更多地关注数据库堆栈。 根据个人经验,我认为3层核心数据堆栈更适合大规模应用。 (参见:http://www.cocoanetics.com/2012/07/multi-context-coredata/http://floriankugler.com/blog/2013/4/2/the-concurrent-core-data-stack)。

使用该架构,您几乎可以确定托管对象上下文不会发生任何非常可怕的事情。

使用不同的子托管对象上下文在每个表上执行保存的类也可能有所帮助。这样您的保存和提取就不会相互拦截。