Iphone NSMutableURLRequest和NSURLConnection可以';在GCD调度中不工作\u异步?

Iphone NSMutableURLRequest和NSURLConnection可以';在GCD调度中不工作\u异步?,iphone,nsurlconnection,grand-central-dispatch,nsurlrequest,nsmutableurlrequest,Iphone,Nsurlconnection,Grand Central Dispatch,Nsurlrequest,Nsmutableurlrequest,我将一个NSMutableURLRequest请求放在dispatch\u async中,但它不起作用。但是,NSURLRequest起作用。代码: dispatch_queue_t queue1 = dispatch_get_global_queue(0, 0); dispatch_async(queue1, ^{ NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithStr

我将一个
NSMutableURLRequest
请求放在
dispatch\u async
中,但它不起作用。但是,
NSURLRequest
起作用。代码:

dispatch_queue_t queue1 = dispatch_get_global_queue(0, 0);
dispatch_async(queue1, ^{

    NSMutableURLRequest* request  = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]];
    [request setHTTPMethod:@"GET"];
    NSURLConnection* connection = [NSURLConnection connectionWithRequest:request delegate:nil];
    [connection start];//It doesn't work!

    //***
    NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]];
    NSURLResponse* theResponse = nil;
    NSError* theError = nil;
    NSData* data = [NSURLConnection sendSynchronousRequest:theRequest
                                         returningResponse:&theResponse 
                                                     error:&theError];
    //This works great!
});
NSMutableURLRequest
NSURLRequest
之间有什么区别吗?或者,我以错误的方式使用了
NSURLConnection


谢谢

不是在一个位置使用可变连接,而不是在另一个位置使用可变连接,而是调用在当前线程上立即运行的同步请求方法,而不是需要运行循环的异步方法。从-[NSURLConnection start]的文档中:

如果你不安排时间 调用此之前,运行循环或操作队列中的连接 方法中的当前运行循环中计划连接 默认模式

从后台线程上的块调用异步方法是多余的。您应该在主线程上调用异步方法(它立即返回并在后台调度其工作),或者在异步调度块中调用同步方法。使用第二种方法,您不必处理所有的委托回调,但是您放弃了对加载操作的一些控制