私は現在、非同期要求を行うときに20秒以上のタイムアウトを得ようとしています。NSURLConnectionとNSTIMERの問題
問題は、NSURLconnectionがメインスレッド上で実行されることです。したがって、NSTIMERを実行して渡された秒数をカウントすると、NSURLconnectionがメインスレッドをブロックしているためセレクタを起動しません。 NSURLconnectionはスレッドセーフであるため、別のスレッドで実行することはできますが、呼び出されていない代理人には奇妙な問題があります。以下は
は私snipletです:
NSURL *requestURL = [NSURL URLWithString:SERVER];
NSMutableURLRequest *req = [[[NSMutableURLRequest alloc] initWithURL:requestURL] autorelease];
theConnection = [[NSURLConnection alloc]initWithRequest:req delegate:self];
if (!timeoutTimer) {
NSLog(@"Create timer");
timeoutTimer = [NSTimer scheduledTimerWithTimeInterval:TIMEOUT target:self selector:@selector(cancelURLConnection) userInfo:nil repeats:YES];
}
ありがとうございました。あなたは実際に正しいです。非同期要求がメインスレッドをブロックすべきではありません。うーん、私は基本的に接続を作成し、次にタイマーを作成しています。 – user281300
独自のタイマーを作成するのではなく、 'NSMutableURLRequest'の' setTimeoutInterval: 'メソッドを使うことを考えましたか? – omz
それは動作しません。それは4-5分後にタイムアウトします。 – user281300