【发布时间】:2016-03-24 14:37:15
【问题描述】:
我已阅读文档并了解在许多情况下您不需要在 Realm 实例上手动调用 refresh。然而,在这个非常常见的场景中,它被证明是必要的,因为完成块可能会在下一个运行循环开始之前查询 Realm。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[RLMRealm defaultRealm] transactionWithBlock:^{
// Add some RLMObjects
}];
if (completion) {
dispatch_async(dispatch_get_main_queue(), ^{
[[RLMRealm defaultRealm] refresh]; // necessary if it queries realm
completion();
});
}
});
我认为通过在后台线程上执行写操作我是一个好公民,但现在我必须调用refresh,我想知道这个调用所涉及的开销是否会破坏进行后台处理的意义.
所以我的问题是:
1) 在Realm 上调用refresh 的性能成本是多少?
2) 在这种模式下只向领域添加一个对象可能是 无意义。在此模式中添加多少对象后,我会发现与仅在主线程上同步执行写入事务相比有优势吗?
【问题讨论】:
标签: multithreading realm