2012-04-29 4 views
0

J'ai le code suivant et pour une raison quelconque, mon bloc n'est pas déclenché.Bloc non déclenché

int main (int argc, const char * argv[]) 
{ 

    @autoreleasepool { 

     return 0; 

     HttpRequestHelper *requestHelper = [[HttpRequestHelper alloc] init]; 

     [requestHelper processRequest:@"www.yahoo.com" callback:^(NSString * response) { 

      NSLog(@"%@",response); 

     }]; 


    } 

} 

@implementation HttpRequestHelper 

-(void) processRequest:(NSString *)url callback:(void (^)(NSString *))block 
{ 
    block(url); 
} 

Répondre

1

Eh bien, tout d'abord, vous avez return 0; dès le début de main(), donc il va quitter immédiatement.

Même après cela, à partir de son interface, je comprends que HttpRequestHelper est asynchrone. Il commencera à traiter la demande, mais ne l'appellera pas immédiatement. Au lieu de cela, il appellera seulement le rappel après que la demande a été traitée. Le problème est que vous ne lui donnez pas l'opportunité de traiter la demande. Dès que vous avez lancé la demande, vous autorisez main à quitter, ce qui termine le programme.

Vous devrez probablement exécuter la boucle d'exécution jusqu'à ce que le rappel soit appelé.

+0

Ah n'a même pas remarqué le retour au début. Merci! – azamsharp

Questions connexes