0

我目前正在这样做:

        NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

然后我更新 UI 并运行大量动画来显示我刚刚收到的数据。

但是我现在尝试使用异步请求来加载信息,因为上述方法正在锁定主线程。

有任何想法吗?我试过设置一个 NSOperationQueue 并使用:

                NSData *responseGBP = [NSURLConnection sendAsynchronousRequest:requestGBP queue:operationQueue completionHandler:nil];

但是我得到这个错误: Initializing 'NSData *__strong' with an expression of in compatible type 'void'

各位高手能帮帮我吗?

4

1 回答 1

3

sendAsynchronousRequest:queue:completionHandler:返回void,所以不能立即初始化NSData对象,需要等待响应,是异步的。所以只要做这样的事情:

[NSURLConnection sendAsynchronousRequest:requestGBP queue:operationQueue completionHandler: ^(NSURLResponse* response, NSData* data, NSError* error)
{
    responseBGP= data;
    // Additional code handling the result goes here, not after the call.
}];
// Here responseBGP may be nil as well, you don't know when the concurrent 
// operation will finish.

注意,调用该方法后,并不是说responseBGP会被初始化,因为该方法是异步的,在队列中执行。

于 2013-06-11T19:20:06.307 回答