それぞれの動作の違いについては知っていますが、パフォーマンスの観点から知りたいです(iPhone内のリソース)。
非同期リクエストを送信し、デリゲートが呼び出されるのを待つとします。これは私の実行スレッドをロックしません。しかし、これを行うことと、GCDを使用して別のスレッドで同期要求を送信することとの違いは何ですか。
このような:
dispatch_queue_t findPicsQueue;
findPicsQueue = dispatch_queue_create("FindPicsQueue", NULL);
dispatch_async(findPicsQueue, ^{
NSData *theResponse = [NSURLConnection sendSynchronousRequest:theRequest
returningResponse:&response
error:&error];
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
if (error) {
NSLog(@"Error: %@",error)
}
if (httpResponse.statusCode == 200)
{
[self parseXMLFile:theResponse]; // Parses Data and modifies picturesFound
for (PictureData *tmp in picturesFound) {
NSLog(@"%@",tmp);
}
}
}
メインスレッドで実行されていないため、インターフェイスはロックされませんが、この特定のスレッドはロックされます。また、GCDはキューを同時に実行すると思います。
前もって感謝します。私は本当にこの質問を明確にしたいです。