我遇到的间歇性错误很难调试。
我从以下方法中收到以下错误
核心数据提取上的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
我已经打开了NSZombieFlag来试图查看某个内存是否在某个地方被释放然后被访问,但是我对这导致了什么感到难过。任何想法或见解将不胜感激。
答案 0 :(得分:4)
我在核心数据中遇到的几乎所有 EXC_BAD_ACCESS 问题都是由尝试使用线程并发而不是新的队列并发模型引起的。
从iOS 5开始,在访问托管对象上下文时,您需要使用performBlock
或performBlockAndWait
。
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Concurrency.html