0

NSObjectPHP Web サービスからデータをダウンロードするを作成しました。問題は、シミュレーターでアプリを実行するとうまく動作することですが、デバイスではデリゲート メソッドが呼び出されません。どうしてか分かりません。すべてのデリゲート メソッドを作成しましたが、どれも呼び出されません。これはNSObjectコードの一部です:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:hostStr]];
 NSLog(@"%@ URL Engine",hostStr);
 dispatch_async(dispatch_get_main_queue(), ^{
 _connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];

       // while(!finished) {
         //   [[NSRunLoop currentRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate distantFuture]];
        //}
        [_connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
        [_connection start];
    });
4

1 に答える 1

0

メイン スレッド キューで接続を実行するために、dispatch_async を呼び出すのは注意が必要です。

デリゲートをメインスレッドで呼び出させたい場合は、これを試してください。

 [self performSelectorOnMainThread:@selector(startConnection) 
                        withObject:Nil 
                     waitUntilDone:NO];

デリゲートが他のスレッドで呼び出されるようにしたい場合は、次を試してください。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop];
    [connection scheduleInRunLoop:currentRunLoop forMode:NSRunLoopCommonModes];
    [connection start];
    [currentRunLoop run];
});
于 2013-06-25T08:52:51.187 に答える