Realm iOS:用捆绑的数据库启动Realm有多贵?

时间:2018-06-06 03:32:42

标签: ios swift database realm realm-mobile-platform

我正在为我的项目使用Realm,我需要在非UI阻塞线程(即后台)中查询结果列表,只读;我咨询了Realm的doc,似乎我需要在查询它的同一个线程中创建Realm实例,所以我想知道每次重新创建Realm对象有多贵?

@IBAction func scoreAction(_ sender: Any?) {
    DispatchQueue.global(qos: .background).async }
        let scores = loadScore()
        DispatchQueue.main.async {
            display(scores)
        }
    }
}

然后:

func loadScore() -> [Score] {
    let realm = try! Realm(configuration: config)
    return realm.objects(Score.self).filter("some criteria")
}

1 个答案:

答案 0 :(得分:0)

调用Realm的初始化程序实际上并不创建新数据库,它只是在初始化程序中使用的RealmConfiguration中指定的位置创建对现有Realm数据库的新引用。 Realm。这意味着,通常,一旦数据库打开,通过调用Realm()Realm(configuration: config)创建对它的新引用并不昂贵。因此,一般来说,在线程之间切换时创建对Realm的新引用通常更有意义。

当然,要确定哪种更适合您的特定用例,您实际上需要在真实设备上运行测试,但只要您不在线程之间切换经常(在一秒钟内多次说),你应该可以在切换它们之后在两个线程上创建一个对Realm的新引用。