3

我看到的问题与此处描述的完全一样:http: //fingertwister.tumblr.com/post/323​​41639626 /coredata-problem-with-multiple-stores-using

即,两个商店,一个是静态的,另一个是用户生成的。设置一个 NSFetchedResultsController 以仅从其中一个商店中获取。当控制器被释放时,应用程序在 NSArray 实例上崩溃并出现 EXC_BAD_ACCESS。该代码在 iOS 4 和 5 中运行良好;崩溃仅发生在 iOS 6 中。

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

文档似乎没有说 iOS 6 在这方面有什么变化。我错过了什么吗?

4

1 回答 1

3

之所以出现这个问题,是因为 CoreData 中的某处内存管理出现问题,导致受影响的Stores-array 被提前释放。

您可以通过增加引用计数器作为 hack 来解决此问题: https ://gist.github.com/maruno/5451607

于 2013-04-24T12:08:26.840 回答