2017-01-13 45 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上調用。