2017-01-13 38 views
3

私のプロジェクトでRealmを使用していますが、realm.write()メソッドが同期であるかどうかを知りたいと思います。 私の例はここにある:上記の例でSwift Realm書き込みメソッドが同期スレッドまたは非同期スレッド

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

、私はここに私はinvalidate()

を書いていますレルム対象外かっこを削除していますことは、私の混乱です:

  1. write()がある場合同期している場合、invalidate()はOKです

  2. 以前の非同期の場合は、 lidateが呼び出されます、とレルムが解放されますが、あなたは書き込み操作がバックグラウンドで実行されている

おかげ

答えて

-2

方法は、あなたがそれのためにバックグラウンドキューを指定しなかったとして、同期メソッドです。

FUNC無効化() 説明 無効化()メソッドの 目的は、レルムが管理するすべてのオブジェクト、結果、LinkingObjects、とリストを無効にします。 レルムはアクセスされたデータのバージョンで読み取りロックを保持しているため、異なるスレッド上でレルムに加えられた変更は、このレルムが参照するデータを変更または削除しません。このメソッドを呼び出すと、読み取りロックが解除され、ファイルの拡張ではなく、後で書き込みトランザクションによってディスク上の領域が再利用されます。このメソッドは、不要になったレルムから以前にデータを読み取ったバックグラウンドスレッドで長いブロッキング操作を実行する前に呼び出す必要があります。 現在のスレッドでこのRealmインスタンスから取得されたすべてのオブジェクト、結果およびリストのインスタンスが無効になります。オブジェクトと配列は使用できません。結果は空になります。レルム自体は有効なままであり、次にレルムからデータを読み取ったときに新しい読み取りトランザクションが暗黙的に開始されます。 レルムからデータを読み取らずに、またはレルムからデータを読み取る前に、このメソッドを複数回連続して呼び出すと、操作なしです。このメソッドは、読み取り専用領域では呼び出されないことがあります。

関連する問題