Swift Realm Write方法是Sync或Async Thread

Pra*_*noi 5 realm ios swift

我在我的项目中使用Realm,我想知道该realm.write()方法是否同步。我的例子在这里:

 let realm = try! Realm()
    try! realm.write {
        realm.delete(message)
    }
    realm.invalidate()
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,我正在删除领域对象和正在编写的外部花括号 invalidate()

这是我的困惑:

  1. 如果write()是同步的就invalidate()可以

  2. 如果Async比之前的write无效调用,并且领域将释放,但操作在后台运行

谢谢

San*_*osh -2

您编写的方法是同步方法,因为您没有为其指定后台队列。Invalidate() 方法的目的

func invalidate() 描述 使 Realm 管理的所有对象、结果、LinkingObjects 和列表无效。Realm 对其访问的数据版本持有读锁,因此在不同线程上对该 Realm 所做的更改不会修改或删除该 Realm 看到的数据。调用此方法会释放读锁,从而允许以后的写事务重用磁盘上使用的空间,而不是增加文件。在您之前从不再需要的 Realm 读取数据的后台线程上执行长时间阻塞操作之前,应调用此方法。当前线程上从该 Realm 实例获取的所有 Object、Results 和 List 实例都将失效。不能使用对象和数组。结果将变为空。Realm 本身仍然有效,并且下次从 Realm 读取数据时会隐式开始新的读取事务。连续多次调用此方法而不从 Realm 读取任何数据,或者在从 Realm 读取任何数据之前,是无操作。不能在只读 Realm 上调用此方法。