我看到的问题与此处描述的完全相同: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中发现任何改变。我错过了什么吗?
答案 0 :(得分:3)
这个问题是因为CoreData中的某个地方存在内存管理问题,导致受影响的存储阵列提前释放。
你可以通过增加引用计数器作为黑客来解决这个问题: https://gist.github.com/maruno/5451607