Ios 如何将对象保存到核心数据而不泄漏

Ios 如何将对象保存到核心数据而不泄漏,ios,swift,multithreading,core-data,memory-leaks,Ios,Swift,Multithreading,Core Data,Memory Leaks,我有几乎相同的核心数据堆栈#2:。(我是单身汉) 在我保存工人moc(最后一个moc)后,我得到了泄漏(终端中的泄漏应用程序名称)。 这是我的保存功能: func saveToLast(moc: NSManagedObjectContext?) throws{ if let moc = moc { moc.performAndWait({ _ in if moc.hasChanges {

我有几乎相同的核心数据堆栈#2:。(我是单身汉) 在我保存工人moc(最后一个moc)后,我得到了泄漏(终端中的泄漏应用程序名称)。 这是我的保存功能:

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,我知道迟早我会创建一个死锁,如果我把perform放在主线程之前,就不能保证后台线程在worker上按顺序保存。
有人能告诉我如何使用串行队列或其他替代我编写的内容进行保存吗?

您使用哪个iOS/Swift版本进行测试?你是在使用模拟器还是真的设备?Ios 10 swift 3模拟器我也在使用Ios 10和swift 3时发现了很多(轻微的)泄漏。我已经提交了好几份bug报告,似乎这只发生在iOS 10中。在我的例子中,如果我使用ios9.x测试它,就不会发生泄漏。