Restkit GET调用不是异步发送的?

时间:2013-04-19 11:34:08

标签: ios asynchronous restkit grand-central-dispatch rkobjectmapping

我在iOS应用中使用Restkit对我的服务器进行GET调用。我可以让调用工作得很好,除了它应该是异步的,它阻止我的主线程。我基本上使用他们的确切示例来从他们的github页面发出请求,如下所示:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mywebapi.com/Article"]];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
    Article *article = [result firstObject];
    NSLog(@"Mapped the article: %@", article);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
    NSLog(@"Failed with error: %@", [error localizedDescription]);
}];
[operation start];

这将阻止所有主线程执行(例如我的转换),直到调用成功块为止。将此调用包含在dispatch_queue内部确实可以解决问题,但我理解这个方法本身应该是异步的。

我是否遗漏了RKObjectRequestOperation上的一些配置,或者我应该调用异步呼叫的其他方法?

1 个答案:

答案 0 :(得分:0)

我在这里找到了这个问题的答案:

RestKit Makes UI Unresponsive

基本上,你需要将它添加到NSOperationQueue,否则它将在主线程上运行调用。