まず、次のようにNSURLReuqest(変更不可)を使用すると、設定された内容に応じて接続がタイムアウトします。奇妙なことに、NSLogが常に0を読み取るのはなぜですか?
self.requestURL = [NSURLRequest requestWithURL:[NSURL URLWithString:requestString]cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20.0];
NSLog(@"request timeOutInterval:%d", self.requestURL.timeoutInterval); // always 0
次に、このようなことをしましたが、timeoutIntervalが設定されません。
self.requestURL = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:requestString]] autorelease];
[self.requestURL setTimeoutInterval:20];
NSLog(@"request timeOutInterval:%i", self.requestURL.timeoutInterval); // same thing always 0 here.
編集。現在、%fを使用してtimeoutIntervalプロパティをログに記録していますが、どちらも20.000を読み取ります。しかし、本当の問題は、私のNSMutableURLRequestが- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
timeoutInterval(20s)に達したときにデリゲートコールバックメソッドを起動しなかった理由です。代わりに、75年代頃にのみタイムアウトになります。デフォルトの60秒よりもさらに長い...
回線を削除しても[self.requestURL setTimeoutInterval:20];
、接続は75秒でタイムアウトします。
私が試してみました
self.requestURL = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:requestString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20.0] autorelease];