我知道每个工作方式之间的区别,但我想从性能角度了解(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 会同时运行队列。
提前致谢。我真的很想澄清这个问题。