我有一个应用程序,允许用户通过Web服务获取流量计信息。在农村地区,网络连接可能很慢或根本不存在。我想在fetch操作上设置超时但我不确定如何去做。这是获取操作:
[self.view addSubview:hud];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
stateGauges = [[GaugeList alloc] initWithStateIdentifier:stateIdentifier andType:nil];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
[hud removeFromSuperview];
});
});
如果我希望此操作超时(10秒),导致活动指示消失并使应用恢复正常运行,我该怎么办呢?
谢谢!
答案 0 :(得分:1)
阻止无法取消,他们需要自行检查。
坏与坏艰难的方式(DYI)你需要一个单独的队列,它只有一个超时块结束,在超时时你将BOOL设置为isCancel。在另一个块中,您可以检查
使用NSOperationQueue& NSOperation API - :)
在那里,NSOperationQueue也不会自动杀死长时间运行的操作,但是一般的基础设施到位并且更容易完成
e.g。该操作可以自行完成...请参阅AFNetworkingOperations了解其中一种方法