Cocoa NSDictionary Dictionary WithContentsOfURL超时?
我写了一个简单的代码从web服务器获取字符串值,现在我想设置超时,比如,10秒后执行getData,如果服务器10秒后没有响应,取消获取数据并执行“noConnect”。知道我该怎么做吗Cocoa NSDictionary Dictionary WithContentsOfURL超时?,cocoa,httpwebrequest,timeout,nsurl,Cocoa,Httpwebrequest,Timeout,Nsurl,我写了一个简单的代码从web服务器获取字符串值,现在我想设置超时,比如,10秒后执行getData,如果服务器10秒后没有响应,取消获取数据并执行“noConnect”。知道我该怎么做吗 -(void)getData { NSURL *url = [NSURL URLWithString: [NSString stringWithFormat: @"http://exaple.com/example.plist"]]; NSDictionary *data = [NSDictionary dic
-(void)getData {
NSURL *url = [NSURL URLWithString: [NSString stringWithFormat:
@"http://exaple.com/example.plist"]];
NSDictionary *data = [NSDictionary dictionaryWithContentsOfURL:url];
NSString *aKey = [chamUpdateData objectForKey:@"count"];
}
-(void)noConnect{}
您可以使用…将对
字典的调用包装为一个,以便异步执行它;然后启动一个NSTimer
,这样它就会启动,您可以检查NSOperation
的状态;如果它仍在运行
,则取消它
请记住,我所知道的是,一旦您发送了网络请求,就无法真正停止它。因此,当连接需要更长的时间时,您只需要有一个超时来管理案例。如果响应在1分钟内到达,您只需忽略该数据。创建一个10秒的NSTimer并调用该函数,该函数将检查服务器是否没有响应,并相应地停止获取数据 NSTimer*定时器=[NSTimer scheduledTimerWithTimeInterval:10.0 目标:自选择器:@selector(stopGettingData)userInfo:nil 重复:否] 如果应用程序位于cocos2d中,则不能使用NSTimer。相反,计划一个间隔为1秒的函数,只需在该函数中增加一个计数,并检查该计数是否为10,如果计数为10,则调用stopGettingData函数