2012-04-29 117 views
0

我有下面的代码,由于某种原因我的块没有被解雇。Block not fired

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

嗯,首先,你必须return 0;权在main()的开始,所以它会立即退出。

即使在那之后,从它的接口,我收集的信息是比HttpRequestHelper是异步的。它将开始处理请求,但不会立即调用回调。相反,它只会在处理请求后调用回调函数。问题是,你不给它一个处理请求的机会。只要您发起请求,就允许main退出,这会终止程序。

您可能必须运行运行循环,直到调用回调。

+0

啊,甚至没有注意到开始时的回报。谢谢! – azamsharp 2012-04-29 02:35:04