Core Data Fetch上的EXC_BAD_ACCESS(代码= 1,地址= 0x10)

时间:2016-03-25 14:42:54

标签: ios swift core-data exc-bad-access

我遇到的间歇性错误很难调试。

我从以下方法中收到以下错误

  

核心数据提取上的EXC_BAD_ACCESS(代码= 1,地址= 0x10)

class func getAll(context: NSManagedObjectContext) -> [Tag] {
    var returnValue: [Tag] = []
    do {
        let fetchRequest = NSFetchRequest(entityName: Tag.entityName())
        returnValue = try context.executeFetchRequest(fetchRequest) as! [Tag]
    } catch {
    }
    return returnValue
}

这个错误是间歇性的,并且只发生在每几百个会话中,但是看起来很频繁,我需要处理它。代码在returnvalue = try context.execute...

行中断
  • 从调试开始,我的fetchRequest不是nil
  • 我的context不是nil
  • returnValue的默认值为空数组
  • 我的backgroundContext正在后台线程上运行

我已经打开了NSZombieFlag来试图查看某个内存是否在某个地方被释放然后被访问,但是我对这导致了什么感到难过。任何想法或见解将不胜感激。

1 个答案:

答案 0 :(得分:4)

我在核心数据中遇到的几乎所有 EXC_BAD_ACCESS 问题都是由尝试使用线程并发而不是新的队列并发模型引起的。

从iOS 5开始,在访问托管对象上下文时,您需要使用performBlockperformBlockAndWait

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Concurrency.html