我想在后台线程上获取大量对象,但是我无法将它们传递给主线程,因为我得到了
*** Terminating app due to uncaught exception 'RLMException', reason: 'Realm accessed from incorrect thread'
获取代码
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
//Background Thread
RLMRealm * realm = [RLMRealm defaultRealm];
self.allObjectsRLMResult = [MyClass allObjectsInRealm:realm];
dispatch_async(dispatch_get_main_queue(), ^(void){
// use self.allObjects and do stuff on main thread
});
});
如何在后台执行抓取并将对象传递给主线程,以便最大限度地降低性能影响
我可以获得主键,然后在主线程上重新获取,但这与直接获取它们的性能相同(可能更慢)
答案 0 :(得分:6)
来自Realm的乔在这里。目前你所描述的(获得主键)是最好的方法。我们已经意识到这一点,并且一直在研究线程切换解决方案,但是现在这将是您获取对象的最佳方式。