ゴール全体で使用単一レルムインスタンス/変数:にメモリフットプリントを削減アプリケーション
私のアプローチはAppDelegateクラス &に単一レルムのインスタンスを作成することですが、その代わりに新しい変数を作成するたびにアクセス。
AppDelegate
lazy var realm: Realm = {
let realm = try! Realm()
// Get our Realm file's parent directory
if let folderPath = realm.configuration.fileURL?.URLByDeletingLastPathComponent?.path{
// Disable file protection for this directory
do {
try NSFileManager.defaultManager().setAttributes([NSFileProtectionKey: NSFileProtectionNone],ofItemAtPath: folderPath)
}catch {
printDebug(error)
}
}
return realm
}()
のUIViewController
var realm = (UIApplication.sharedApplication().delegate as! AppDelegate).realm
// Access/Modify realm object
try! self.realm.write{
location.imageFile = fileName
}
質問
1.これはメモリ使用量を減らすのに役立ちますか?
2.欠点は何ですか?
私は既にその答えを読んできました。私は私のアプローチでスレッドの安全性を心配していました。レルムインスタンスを作成するたびにエラーが発生しないようにすると、グローバルインスタンスが1つ作成されるため、コードがきれいに保たれます。 私はグローバル変数の代わりにグローバル関数を作成する方が良いと思います。 私は間違ったスレッドからレルムを呼ぶのを避けることができます。また、コードを乾燥したままにしておきます。 –
なぜこのマネージャーを持っているのか、それぞれの方法でなぜレルムのインスタンスを作成するのでしょうか。それはきれいに見えますが、シングルトンが最悪の解決策であると言う人もいます。 –
最終的にはシングルトンのみを使用します。また、私はデフォルトのレルム設定を使用しているので、私はシングルトンを作成する必要はないと思っていますが、あなたのメソッドはいいようです。それは私に地球規模の機能を使う考えを与えました。 :)ありがとう –