如果指定了affectedStores,则NSFetchedResultsController在iOS 6中崩溃

时间:2013-01-18 09:56:45

标签: ios6 nsfetchedresultscontroller

我看到的问题与此处描述的完全相同:http://fingertwister.tumblr.com/post/32341639626/coredata-problem-with-multiple-stores-using

即两个商店,一个是静态的,另一个是用户生成的。设置NSFetchedResultsController以从其中一个商店中获取。取消分配控制器后,应用程序在NSArray实例上与EXC_BAD_ACCESS崩溃。代码在iOS 4和5中运行得非常好;崩溃只发生在iOS 6中。

Zombie分析显示,被释放的解除分配的NSArray是NSFetchedResultsController的NSFetchRequest的“affectedStores”属性。就像在上面的链接中一样,如果我删除[fetchRequest setAffectedStores:...]命令,问题就会消失。而且,就像在链接示例中一样,就我自己的代码而言,就该阵列的内存管理而言,我看不出任何问题。

Docs似乎没有在iOS 6中发现任何改变。我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

这个问题是因为CoreData中的某个地方存在内存管理问题,导致受影响的存储阵列提前释放。

你可以通过增加引用计数器作为黑客来解决这个问题: https://gist.github.com/maruno/5451607