我有几乎相同的核心数据堆#2:http://floriankugler.com/2013/04/29/concurrent-core-data-stack-performance-shootout/。 (我是单身人士) 在我保存在工作者moc(最后一个moc)后,我得到泄漏(在终端中泄漏app_name)。 这是我的保存功能:
func saveToLast(moc: NSManagedObjectContext?) throws{
if let moc = moc {
moc.performAndWait({ _ in
if moc.hasChanges {
do {
try moc.save()
if let parentMoc = moc.parent {
try self.saveToLast(moc: parentMoc)
}
}
catch {
}
}
})
}
}
如果我保持performAndWait我知道迟早我将创建一个死锁,如果我执行theres并不保证后台线程在主线程(按顺序)之前保存在worker上。 任何人都可以解释我如何用串行队列或任何替代我写的东西来保存?