NSURLConnection initWithRequest
サーバーからデータを取得するために使用しています。サーバーが利用可能な場合、これは正常に機能します。ただし、サーバーが利用できない場合、アプリがハングし、少なくとも 40 ~ 50 秒間まったく応答しなくなります。timeoutInterval
とタイマーを使用してリクエストをキャンセルしようとしました。ただし、アプリはまだハングします。
アプリがハングしている間、どのNSURLConnectionDelegate
メソッドも呼び出されていません。が呼び出されますonTimeExpire
が、何もしません。アプリが再び応答するようになると (50 秒後...)、NSURLConnectionDelegate
delegate
メソッドが呼び出され、すべて問題ありません...
サーバーは、IP 192.168.xx のローカル サーバーであり、サーバー (および csv) ファイルが利用可能な場合にのみデータをアプリにプルします。
NSURLConnection
サーバーが最初にオンラインであるかどうかを確認するために、を起動する前に簡単なチェックを行うことを考えました. しかし、これを行う方法がうまくいかないようですか?何か案は?
-(id) loadCSVByURL:(NSString *)urlString
{
// Create the request.
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0f];
self.timer = [NSTimer scheduledTimerWithTimeInterval:20 //for testing..
target:self
selector:@selector(onTimeExpired)
userInfo:nil
repeats:NO];
(void)[self.connection initWithRequest:request delegate:self];
//THE APP HANGS HERE!!!
return self;
}
-(void)onTimeExpired
{
NSLog(@"cancelling connection now!");
[self.connection cancel];
}