【问题标题】:Realm iOS: how expensive is it to initiate Realm with a bundled db?Realm iOS:使用捆绑的数据库启动 Realm 的成本是多少?
【发布时间】:2018-06-06 03:32:41
【问题描述】:

我在我的项目中使用 Realm,我需要在非 UI 阻塞线程(即后台)中查询结果列表,只读;我查阅了Realm的文档,似乎我需要在查询它的同一个线程中创建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")
}

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 2016-09-26
      • 2016-08-29
      相关资源
      最近更新 更多