我使用NSURLConnection initWithRequest
從服務器獲取一些數據。這可以在服務器可用時正常工作。但是,當服務器不可用時,我的應用程序會掛起並在至少40-50秒內完全無響應。我試過使用timeoutInterval
以及一個定時器來取消請求。但是我的應用仍然掛起。NSURLConnection掛起服務器不可用
雖然我的應用掛起,但沒有調用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];
}
這與Xcode無關。 – 2013-04-30 06:02:34
你用模擬器和設備試過這個嗎?如果在掛起時在調試器中按「暫停」,它停在哪裏? – 2013-04-30 06:38:04
用戶界面鎖定模擬器和設備。當我點擊暫停時,線程1顯示main.m並且'return'行高亮顯示: return UIApplicationMain(argc,argv,nil,NSStringFromClass([xmlLoaderAppDelegate class])); – ack 2013-04-30 07:02:22