在我使用Realm的每个视图控制器中,我将领域作为属性添加到每个类中:
//Whatevs.swift
class Whatevs:NSViewController{
let realm = try! Realm()
}
然后我通过self.realm
在整个课程中引用它。
有没有理由不让它像这样全局可用的实例?
//Global.swift <-- General swift file in my app
let realm = try! Realm() //<-- Not inside a class
答案 0 :(得分:8)
实际上,如果它可以得到帮助,通常不会挂在Realm
个实例上。 :)
在特定线程上调用Realm()
后,Realm将在内部缓存该实例,并在后续的Realm()
调用中返回相同的实例。因此,作为这样的类成员挂在Realm实例上没有明显的性能提升。
如果您在应用程序中执行任何类型的线程操作,则需要小心存储Realm
引用,因为在后台线程上调用self.realm
将触发异常。
如果您只处理默认的Realm,那么最佳做法是在您实际需要时调用let realm = try! Realm()
。
如果您正在处理依赖于特定Configuration
实例的不同类型的域,那么建议将它们存储为全局常量。领域Configuration
对象是线程安全的,因此可以将它们传递给后台线程以在那里创建Realm
个实例而没有任何问题。