我使用领域作为我的项目,我需要查询一个非UI阻塞线程的结果列表(即。(背景),只读;我查阅了领域的文档,似乎需要在被查询的同一个线程中创建领域实例,所以我想知道,如果每次重新创建王国对象,代价会有多大?
@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")
}
发布于 2018-06-06 06:20:18
调用Realm
的初始化程序实际上并不会创建新的数据库,它只是在Realm
初始化器中使用的RealmConfiguration
中指定的位置创建对现有领域数据库的新引用。这意味着,通常情况下,一旦数据库打开,通过调用Realm()
或Realm(configuration: config)
来创建对数据库的新引用在计算上并不昂贵。因此,一般来说,在线程之间切换时创建一个对您的领域的新引用通常更有意义。
当然,要确定哪一种方式更适合您的特定用例,您实际上需要在真正的设备上运行测试,但是只要您不频繁地在线程之间切换(比如在一秒钟内切换几次),那么在这两个线程之间切换之后,您应该可以在两个线程上创建一个新的领域引用。
https://stackoverflow.com/questions/50711871
复制相似问题