我每隔3秒左右使用dispatch_async和一个块来检索服务器数据。处理视图的方法是消失还是用户关闭程序?
async块会不时检查它是否是一个布尔标志?如果是这样,如果异步块正在休眠时视图会退出怎么办?
答案 0 :(得分:4)
您无法轻松取消发送电话,因此最好转而转到NSOperation
。 2012年WWDC上有一则高度相关的视频Session 211 - Building Concurrent User Interfaces on iOS,它涵盖了您所描述的问题。我绝对建议你看。
基本方法是创建一个NSBlockOperation
,它可以检查自身-isCancelled
属性,如果它被取消则提前返回。然后,您可以在viewDidDisappear
。
另一种方法是使用NSTimer
,这也很容易失效/取消。考虑到您的代码正在做什么的描述,这实际上可能是最简单的解决方案。