NSThread と dispatch_queue 内で NSURLConnection を使用してみました。実装された NSURLConnectionDelegate メソッドは呼び出されません。しかし、NSThread と NSOperationQueue 内で NSOperation を使用すると、メソッドが呼び出されます。
1371 次
2 に答える
3
NSURLConnectionDelegate
デリゲート メソッドが呼び出される前にスレッドまたはディスパッチ ブロックの実行が完了するため、メソッドが呼び出されていません。NSURLConnection
このように独自のスレッドで 使用したい場合は、他の人が示唆しているように、実行ループを継続する必要があります。
ここに例があります。基本的
while(!finished) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
finished = TRUE;
}
上記のすべてのことからNSURLConnection
、非同期ブロック内で同期 API を使用する方がよいのではないでしょうか? たとえば、同期リクエストをNSOperation
于 2012-08-28T11:25:56.877 に答える
0
ブロックベースのアプローチを使用できます。
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if ([data length] > 0 && error == nil){
// we should check that data is OK
NSLog(@"Data received");
}
}
于 2012-08-28T12:24:52.293 に答える