GCD z NSURLConnection

ja używamGCD wysyłaćHTTP żądanie asynchronicznie. Oto kod, który nie działa:

dispatch_async(connectionQueue, ^{
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

        [request setURL:[NSURL URLWithString:[NSString stringWithFormat:someURL]]];


        NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
        [connection start];//Not working
    }); 

powyższy kod w ogóle nie działa. Nie otrzymuję żadnych wywołań w metodach NSURLConnectionDelegate.

Ale kiedy spróbowałem następującego kodu, wszystko działało dobrze i otrzymałem odpowiednie wywołania zwrotne

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

[request setURL:[NSURL URLWithString:[NSString stringWithFormat:someURL]]];

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

dispatch_async(connectionQueue, ^{

    [connection start]; // working fine. But WHY ????
});

Czy ktoś może wyjaśnić to dziwne zachowanie bloku / GCD?

questionAnswers(4)

yourAnswerToTheQuestion