领域在后台线程上获取对象并传递给主线程

时间:2015-09-09 11:39:24

标签: ios objective-c multithreading cocoa-touch realm

我想在后台线程上获取大量对象,但是我无法将它们传递给主线程,因为我得到了

*** 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

    });

});

如何在后台执行抓取并将对象传递给主线程,以便最大限度地降低性能影响

我可以获得主键,然后在主线程上重新获取,但这与直接获取它们的性能相同(可能更慢)

1 个答案:

答案 0 :(得分:6)

来自Realm的乔在这里。目前你所描述的(获得主键)是最好的方法。我们已经意识到这一点,并且一直在研究线程切换解决方案,但是现在这将是您获取对象的最佳方式。