ios6 - 如果指定了affectedStores,NSFetchedResultsController 在 iOS 6 中会崩溃

标签 ios6 nsfetchedresultscontroller

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

即,两个存储,一个是静态的,另一个是用户生成的。设置一个 NSFetchedResultsController 以仅从其中一个存储中获取。当 Controller 被释放时,应用程序会因 NSArray 实例上的 EXC_BAD_ACCESS 崩溃。该代码在 iOS 4 和 5 中运行得非常好;崩溃仅发生在 iOS 6 中。

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

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

最佳答案

出现此问题的原因是 CoreData 中的某处内存管理出现问题,导致受影响的Stores 数组提前释放。

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

关于ios6 - 如果指定了affectedStores,NSFetchedResultsController 在 iOS 6 中会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14396375/

相关文章:

Swift NSFetchedResultsController 嵌套对象的最佳实践

ios - 如何从关系实体中进行简单的获取? swift

ios - 有选择地获取核心数据以获得更好的性能(稍后获取大项目)

iphone - SDWebImage 未运行

ios6 - 使用状态栏在 Xcode 4.5 iOS 6.0 中更改为横向

cocoa-touch - 启用预览和分页的 UICollectionView

ios - 将多个 Twitter 时间线动态地组合成单一显示

ios - NSTimer和performSelector:afterDelay:有什么区别?

ios - Swift 中的 NSFetchedResultsController 计数

ios - 从 UICollectionView 的 viewForSupplementaryElementOfKind 获取 NSFetchedResultsController 部分对象