我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];
}