我写了一个简单的代码来从Web服务器获取字符串值,现在我想设置超时,比如,getData 10秒然后如果服务器在10秒后没有响应取消获取数据并执行“noConnect”。我怎么能这样做?
-(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{}
答案 0 :(得分:0)
您可以将dictionaryWith...
中的NSTimer
包裹起来,以便异步执行;然后开始NSOperation
,然后它会触发,你可以检查running
的状态;如果它仍然是{{1}},那么你取消它。
请记住,一旦发送网络请求,我就无法知道实际停止网络请求。因此,当连接花费的时间超过时,您只需要超时来管理案例。如果响应在1分钟内到达,您将忽略该数据。
答案 1 :(得分:0)
创建一个10秒的NSTimer并调用该函数来检查服务器是否没有响应,并相应地停止获取数据。
NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(stopGettingData)userInfo:nil 重复:NO];
如果应用程序位于cocos2d中,则无法使用NSTimer。而是以1秒的间隔安排一个函数,只需递增该函数中的计数并检查它是否为10,如果count为10,则调用stopGettingData函数。