当前位置: 首页 > 面试题库 >

正确的领域使用模式/最佳做法?

柴昆杰
2023-03-14
问题内容

我们正在将项目转换为使用Realm。到目前为止,特别是对于Realm Browser来说,我们印象深刻(非常方便!)。

结果,出现了一些问题,我们希望在进一步进行讨论之前先弄清一些具体的使用模式。我们的应用程序是多线程(API调用,动画等),因此在阅读问题时请记住这一点,因为我知道Realm实例无法(当前)跨线程访问。

  • 我们应该如何担心重复创建Realm实例?开销是多少?
  • 我们是否应该在ViewControllers或Singletons中保留Realm实例以便重复使用?我们已经尝试过了,但是有时实例是从不同的线程访问的,因此我们不得不每次都恢复为创建新实例。
  • 在Realm实例上访问关系属性时,读取的结果数据是保留在内存中还是每次都从磁盘读取?我们是否需要担心由于深度关系访问而导致保留的Realm实例太大?
  • 什么时候需要刷新Realm实例? 我注意到,当我在Realm浏览器中进行更改时,它们会反映在保留的Realm中,而无需调用refresh。
    • 根据文档,每个域上似乎都有一个导致该问题的自动刷新属性。
  • 是否出于不当行为而进入realm酒店Object?如果使用对象的函数没有创建对象或领域(当然是在同一线程上),则我们已将其用于写入领域。

例如…

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

提前致谢。期待您的答复。:D


问题答案:

(免责声明: 我为Realm工作。 我现在已经离开了Realm,但我仍然很乐意为您提供帮助!):)非常 感谢!很高兴听到您喜欢Realm!

多个领域实例 -您完全无需担心!在每个线程上首次实例化时都会创建一个Realm文件对象,并且每次尝试并在之后每次实例化该对象时,都会返回该对象。

保留Realm实例
-从第一点开始,不,您不必担心要挂在其他对象内部的Realm引用。由于Realm在内部跟踪其Realm文件对象并返回相同的对象,因此您不会因未这样做而受到惩罚。话虽如此,如果在对象内部永久引用Realm对象简化了代码复杂度,请随时使用它。

访问Realm关系属性
-严格来说,不是从磁盘复制Realm文件中的数据(就像普通的ORM那样)。而且它使用内存映射直接将磁盘中的数据直接引用到您的内存中属性。因此,不,您不必担心Realm文件的内存过大。

自动刷新 默认情况下,仅对主线程上的Realm文件对象启用自动刷新。
必须为其他线程上的Realm文件对象手动启用它,或者您可以选择使用 refresh方法调用手动刷新它们。

编辑:
我站纠正!autorefresh默认情况下,多个线程上的所有Realm文件对象均处于启用状态。如果autorefresh是,你需要调用唯一的一次refresh是,如果你需要体现在其他文献的运行循环的当前迭代完成之前到领域文件所做的更改。

引用对象的Realm引用
绝对不是,这不是一个坏习惯!实际上,我更喜欢在使用Realm的个人应用程序中执行此操作,以提供适当的上下文,因为它总是更容易,并且在对象及其代码中的父Realm文件之间提供了更强的可视上下文。(哈哈,是的,如果这里有线程问题,您甚至可能在发现问题之前就已经发现了write)。

希望对您有所帮助!让我知道您是否需要在这里澄清任何内容!



 类似资料:
  • 问题内容: 我是Python的新手,因为我想扩展使用R学习的技能。在RI中,往往会加载一堆库,有时会导致函数名冲突。 什么是Python最佳实践。我看到了一些特定的变体,但我看不出它们之间的区别 ,和 前两者之间有什么区别,我应该只导入我需要的东西吗?同样,对于制作小型程序来处理数据和计算简单统计信息的人来说,最糟糕的后果是什么。 更新 我找到了这个出色的指南。它解释了一切。 问题答案: 在pan

  • 3.8 ABP领域层 - 规约模式 3.8.1 简介 规约模式 是一种特别的软件设计模式,通过链接业务规则与使用boolean逻辑来重组业务规则。 实际上,它主要是用来对实体和其它业务对象构造可重用的过滤器。 3.8.2 示例 在这节,我们会了解到规约模式的必要性。这节中说到的都是通用的与ABP的实现无关。 假设有个统计客户数量的方法;如下所示: public class CustomerMana

  • 问题内容: 我知道您可以在React类中指定样式,如下所示: 我是否应该以这种方式进行所有样式设置,并且在CSS文件中完全没有指定任何样式? 还是应该完全避免使用内联样式? 两者兼而有之,似乎很奇怪而且很乱-在调整样式时需要检查两个位置。 问题答案: 目前还没有很多“最佳实践”。我们中那些使用内联样式作为React组件的人仍在进行大量试验。 全部还是全部? 我们所称的“样式”实际上包括许多概念:

  • 问题内容: 我想知道如何使用Node.js从头开始开发网站。我明白我怎么能 可能 做到这一点,但我感兴趣的是 最好的 设计实践。 我需要这个理论网站来: 做很多AJAX 非常简单 相对较小 连接到…假设一个MySQL服务器 在PHP中,构建一个非常小的网站非常简单-我在Apache和MySQL服务器上设置了PHP,然后执行以下操作: 其中具有用于连接数据库的connect.php,具有常见数据库相

  • 问题内容: 多线程Java应用程序中进行进程间通信的最佳方法是什么? 它应该是高性能的(因此请不要使用JMS),易于实现且可靠,以便对象和数据只能绑定到一个线程? 任何想法欢迎! 问题答案: 假设场景1是JVM,那么实际上应该是多个线程,尤其是各种Queue实现,都是java.util.concurrent。但是,在此之上的抽象可能很好,Jetlang看起来非常有趣,轻量级的Java消息传递。

  • 问题内容: 我开始用纯HTML创建网页。我有一个页眉,主要内容和页脚。主要内容分为左右两个内容。除了正确的内容外,所有页面上的所有内容都相同。现在我大约有15页。如果我在其他静态页面(页眉,页脚和左侧内容)上进行了某些更改,这将非常麻烦,因为我必须浏览所有页面。 为每个静态区域创建一个HTML文件的最佳方法是什么,如何集成它? 问题答案: 有两种方法可以做到这一点。 如果您仅使用HTML,则可以使