我们正在将项目转换为使用领域.到目前为止,我们真的印象深刻,特别是领域浏览器(太方便了!)

因此,出现了几个问题,在进一步讨论之前,我们想了解一些具体的使用模式.我们的应用程序是高度多线程的(API调用、动画等),所以在阅读问题时请记住这一点,因为我知道领域实例(目前)不能跨线程访问.

  • 对于重复创建领域实例,我们应该有多担心?开销是多少?
  • 我们应该费心在ViewController或Singleton中保留领域实例 重复使用吗?我们try 过这种方法,但有时实例是从不同的线程访问的,所以每次都必须恢复到创建一个新实例.
  • 访问领域实例上的关系属性时,为 读取的结果数据保留在内存中,还是从中读取 每次都是磁盘吗?我们是否需要担心保留的领域实例 因为深层次的关系接触而变得太大?
  • 何时需要刷新域实例?我注意到当
  • Object上访问realm属性是不是一种糟糕的做法?如果使用对象的函数没有创建对象或领域(当然是在同一线程上),我们就用它来写入域.

例如...

func saveStuff(thingToUpdate: Object?) {
   if let thingToUpdate = thingToUpdate, let realm = thingToUpdate.realm {
       realm.write {
           thingToUpdate.name = "lionpants"
       }
   }    
}

提前谢谢.我期待你的回答D

推荐答案

(Disclaimer: I work for Realm. I've left Realm now, but I'm still happy to help!) :)个 非常感谢!听说你在享受王国真是太好了!

Multiple Realm Instances- 你根本不用担心这件事!在每个线程上第一次实例化时都会创建一个领域文件对象,此后每次try 实例化时都会返回相同的对象.

Retaining Realm Instances- 从第一点开始,不需要担心挂起其他对象内部的领域引用.由于领域在内部跟踪其领域文件对象并返回相同的对象,因此您不会因为没有这样做而受到惩罚.也就是说,如果在对象内拥有对领域对象的永久引用可以简化代码复杂性,那么可以继续使用它.

Accessing Realm Relationship Properties -

Auto-refresh

EDIT:我承认错误!默认情况下,多个线程上的所有领域文件对象都启用autorefresh.启用autorefresh时,仅当需要在运行循环的当前迭代完成之前将对领域文件所做的更改反映在其他引用中时,才需要调用refresh.

Referencing an object's Realm reference 绝对不是,这完全不是一种糟糕的练习!实际上,我更喜欢在我自己的个人应用程序中这样做,这些应用程序使用领域来提供适当的上下文,因为它总是更容易,并且在代码中提供对象和其父领域文件之间更强的可视上下文.(哈哈,是的,如果这里有线程问题,你可能还没到write点就发现了).


我希望那会有帮助!如果这里有什么需要澄清的,请告诉我!

Ios相关问答推荐

在许多UIButton中对齐文本,即使SF Symbols(或其他图像)具有不同的宽度?

如何在将EXPO更新到50.0后修复react 本机错误

Xcode -Google Mobile Ads SDK在没有AppMeasurement的情况下初始化

使用标头UICollectionViewFlowLayout时的简单SwiftUI视图错误

如何在expo-react native中从ios平台中排除包

无法向委托发送数据

_SKStoreProductParameterAdNetworkSourceIdentifier未定义符号

UIControl 子类 - 按下时显示 UIMenu

从 PHAssets 生成图像时,iOS 应用程序因内存问题而崩溃

占位符文本未显示在 TextEditor 上

如何在 SwiftUI 的 TabView 中添加底部曲线?

迁移到 UIKit 生命周期的应用程序不会调用 SceneDelegate

如何在 SwiftUI 的列表中使用带有 swipeActions 的 NavigationLink

iOS,Swift 5,AppDelegate open url / .onOpenUrl - 如何找到调用我的自定义方案的调用应用程序

UITableView 页脚,停止浮动内容

界面生成器中 UIView 的边框 colored颜色 不起作用?

如何在 UILabel 中找到文本子字符串的 CGRect?

NSURLSession:如何增加 URL 请求的超时时间?

UITextView 内容插图

什么是强属性属性