locos Objective-C e escopo variáv

Gostaria de definir o valor de umNSData objeto dentro do meu bloco. Alguém pode me informar o que fiz de errado aqui?

// Data
__block NSData *data = nil;

[ZSURLConnection performRequestWithUrl:wsdlURL xmlString:xml completionHandler:^(NSData *response, NSError *error) {

    // Handle the error
    if (error) {
        NSLog(@"Error: %@", [error localizedDescription]);
    } else {
        data = response;
    }//end

}];//end block

if (data) {
    NSString *d = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
    NSLog(@"DATA --- %@", d);
}

return data;

Por que não posso atribuir a resposta adata e depois recuperá-lo fora do meu bloco?

questionAnswers(4)

yourAnswerToTheQuestion