在我使用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
TiM.. 9
实际上,Realm
如果它可以得到帮助,通常不会挂在实例上.:)
一旦Realm()
在特定线程上调用,该实例将由Realm内部缓存,并且后续Realm()
调用将返回相同的实例.因此,挂起作为类成员的Realm实例并没有明显的性能提升.
如果在应用程序中执行任何类型的线程操作,则需要小心存储Realm
引用,因为调用self.realm
后台线程将触发异常.
如果您只处理默认的Realm,那么最佳做法是let realm = try! Realm()
在您实际需要时调用它.
如果您正在处理依赖于特定Configuration
实例的不同类型的域,那么建议将它们存储为全局常量.Realm Configuration
对象是线程安全的,因此可以将它们传递给后台线程以Realm
在那里创建实例而没有任何问题.
实际上,Realm
如果它可以得到帮助,通常不会挂在实例上.:)
一旦Realm()
在特定线程上调用,该实例将由Realm内部缓存,并且后续Realm()
调用将返回相同的实例.因此,挂起作为类成员的Realm实例并没有明显的性能提升.
如果在应用程序中执行任何类型的线程操作,则需要小心存储Realm
引用,因为调用self.realm
后台线程将触发异常.
如果您只处理默认的Realm,那么最佳做法是let realm = try! Realm()
在您实际需要时调用它.
如果您正在处理依赖于特定Configuration
实例的不同类型的域,那么建议将它们存储为全局常量.Realm Configuration
对象是线程安全的,因此可以将它们传递给后台线程以Realm
在那里创建实例而没有任何问题.