gpt4 book ai didi

ios - 在主 ui 线程中加载 Realm 对象是否可以接受?

转载 作者:行者123 更新时间:2023-11-29 00:42:10 25 4
gpt4 key购买 nike

我们正在采用 (Swift)Realm 作为我们 iOS 应用程序中的数据存储,到目前为止我们对此非常满意。我们对使用 Realm 和多线程检索和存储对象的设计有一个疑问:

在主 ui 线程中加载对象是否可以接受?

  • 我们知道加载 Realm 的对象不能在线程之间共享的限制。
  • 我们还没有看到任何性能问题,但到目前为止我们的方法是在后台线程中加载各种资源。
  • 在我们加载和过滤一些数据并注册通知 block 的情况下,我们没有看到使用主 ui 线程的问题,但是我们如何处理这种情况,例如我们想要显示所有数据 TableView ?

最佳答案

Is it acceptable to load objects in the main ui thread?

是的,在大多数情况下*是可以接受的并且速度足够快。如果从数据库读取会阻塞用户,这是 Not Acceptable ,但由于没有像故障这样的概念,读取访问总是可以快速预测的。只有当你有一个非常复杂的对象图时,你需要做大量的预处理才能在 UI 上显示对象,使用后台线程和/或缓存来保证良好的用户体验才有意义。

In the case where we load and filter some data and register a notification block, we don't see problems with using the main ui thread, but how would we handle a situation, where we for example want to display all data in a table view?

UITableView 只请求那些当前在屏幕上可见的单元格并重用 View 容器。 Realm 集合在这种惰性性质上是类似的,当你不过滤它时,它不会增加内存压力,因为你只会获得你从中提取的那些对象的对象访问器。只要依赖内置的 Realm ResultsList 集合,就不需要分页。仅当您需要以 Realm 不支持的方式应用自定义和复杂的过滤器时,才可能需要在后台线程上处理它。

关于ios - 在主 ui 线程中加载 Realm 对象是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com