2017-01-13 46 views
3

我在我的项目中使用领域,并且我想知道realm.write()方法是否同步。 我的例子是在这里:Swift领域写入方法是同步或异步线程

let realm = try! Realm() 
    try! realm.write { 
     realm.delete(message) 
    } 
    realm.invalidate() 

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

这里是我的困惑:

  1. 如果write()是同步,那么invalidate()是好的

  2. 如果Async比以前写inva lidate会打电话和领域将释放,但操作是在后台运行

感谢

回答

-2

你写的方法是同步的方法,你没有为它指定背景队列。 目的invalidate()方法的

FUNC无效() 说明 所有失效对象,结果,LinkingObjects,以及由境界管理列表。 Realm对其访问的数据版本持有读锁定,以便在不同线程上对Realm所做的更改不会修改或删除此Realm所看到的数据。调用此方法将释放读取锁定,从而允许磁盘上使用的空间在以后的写入事务中被重用,而不是增长文件。在对先前从Realm中读取不再需要的数据的后台线程执行长时间阻塞操作之前,应该调用此方法。 在当前线程上从此Realm实例获取的所有对象,结果和列表实例都将失效。对象和阵列不能使用。结果将变为空白。 Realm本身仍然有效,并且在下一次从Realm中读取数据时,隐式地开始新的读取事务。 连续多次调用此方法而不读取任何来自Realm的数据,或者在从Realm读取任何数据之前,都是无操作的。此方法不能在只读Realm上调用。