2012-04-29 13 views
0

次のコードがありますが、何らかの理由でブロックが起動しません。それはすぐに終了するために起こっているように、すべての最初のブロックがブロックされない

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); 
} 

答えて

1

さて、あなたは、右main()の開始時にreturn 0;を持っています。

それ以降も、そのインターフェイスから、私はHttpRequestHelperよりも非同期です。要求の処理が開始されますが、すぐにコールバックは呼び出されません。むしろ、要求が処理された後でコールバックを呼び出すだけです。問題は、リクエストを処理する機会を与えないということです。要求を開始するとすぐにmainを終了することができ、プログラムを終了します。

おそらく、コールバックが呼び出されるまで実行ループを実行する必要があります。

+0

ああ、開始時にリターンに気付かなかった。ありがとう! – azamsharp