EXC_BAD_ACCESS(NSManagedObject上的代码= 1(实体:

时间:2018-06-13 08:54:32

标签: ios swift core-data nsmanagedobject

我在Swift(ios app)中有一个非常大的项目,我需要在不同的线程中的不同位置进行大量修改和访问coreData。我首先遇到了很多访问数据的问题,而另一个线程正在改变它,所以我重新组织了我的项目:

class dataManager {
    var bool : isAvailable

    func func1 ()
    {
        DispatchQueue.global(qos: .default).async {
            if(isAvailable)
            {
                self.isAvailable = false
                doStuff1
                self.isAvailable = true
            }
            else
            {
                sleep(1)
                func1()
            }
        }
    }

    func func2 ()
    {
        DispatchQueue.global(qos: .default).async {
            if(isAvailable)
            {
                self.isAvailable = false
                doStuff2
                self.isAvailable = true
            }
            else
            {
                sleep(1)
                func2()
            }
        }
    }

}

在真实项目中,有两个以上的功能。然后我的主线程中的viewControllers在必要时调用函数。所以基本上这些函数等待对coreData的访问可用,这样他们就可以读取或写入而没有任何问题。这些函数每2分钟左右调用一次,因此在执行之前等待另一个函数不应该是一个问题。这似乎工作得很好,它运行正常,但经过一段时间后,它会崩溃并给我EXC_BAD_ACCESS(代码= 1。它崩溃在这一行:

let entity = NSEntityDescription.entity(forEntityName: self.namesEntry[i], in: managedContext)!
let event = NSManagedObject(entity: entity, insertInto: managedContext) //crashes here 

变量managedContext在创建类时创建一次:

    managedContext = appDelegate.persistentContainer.viewContext

然后由每个函数访问。

我已经阅读了很多关于此错误的文章,但是他们都说数据正在尝试访问已删除的内容,所以我不明白这是怎么回事?考虑到只有一个功能正常工作(我已经检查过印刷品,确实只有一个功能被访问)感谢您的帮助

0 个答案:

没有答案