iOS5 核心数据获取冻结应用

Posted

技术标签:

【中文标题】iOS5 核心数据获取冻结应用【英文标题】:iOS5 core data fetch freezes the app 【发布时间】:2012-01-19 06:57:55 【问题描述】:

ios5 开始,我的应用在使用 fetchedResultsController 时开始死机。退出模拟器后我附上了调试器结果。

任何帮助将不胜感激。

谢谢

【问题讨论】:

你使用多少线程?您尝试在哪里获取?粘贴代码。您似乎创建了一个死锁。 我正在使用主表视图和其他三个表视图。当主表视图中的列表选择发生变化时,我正在使用 performselectorinbackground 方法更新三个表视图(基本上我将 fetchedresultscontroller 设为 nil 并在这些方法中再次执行 fetch)。应用程序冻结在 NSInteger totalCount = [managedObjectContext countForFetchRequest:fetchRequest error:&error] 行(在 fetchedresultscontroller 块内)。在 iOS5 之前应用程序运行良好。 【参考方案1】:

您在 cmets 中说您正在使用 performSelectorInBackground: 来更新表格视图。这是不对的,所有影响UI的代码都应该在主线程上执行。

此外(我认为这是导致问题的原因)您不能跨线程重用 MOC。每个线程必须有自己的 MOC,然后可以使用相同的NSPersistentStoreCoordinator

您应该阅读Apple's guide on this topic。

【讨论】:

以上是关于iOS5 核心数据获取冻结应用的主要内容,如果未能解决你的问题,请参考以下文章

核心数据冻结所有应用程序

核心数据:保存结束时冻结

TableView 由于核心数据错误而崩溃/冻结

IOS5无法使用核心数据库

ios5 核心数据或首选项列表

如何解决:为啥核心数据(NSFetchedResultsController)在 iOS5 和 iOS 4 中排序不同