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

1 に答える 1

1

さて、まず第一に、あなたはreturn 0;開始時に正しいmain()ので、すぐに終了します。

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

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

于 2012-04-29T02:30:39.353 に答える