我正在使用 dispatch_async 和一个块每 3 秒左右检索一次服务器数据。处理视图消失或用户关闭程序的方法是什么?
它会是一个布尔标志,异步块不时检查吗?如果是这样,如果视图在异步块处于休眠状态时退出怎么办?
我正在使用 dispatch_async 和一个块每 3 秒左右检索一次服务器数据。处理视图消失或用户关闭程序的方法是什么?
它会是一个布尔标志,异步块不时检查吗?如果是这样,如果视图在异步块处于休眠状态时退出怎么办?
您不能轻易取消调度呼叫,因此最好的选择是NSOperation
改为。WWDC 2012, Session 211 - Building Concurrent User Interfaces on iOS中有一个高度相关的视频,它准确地涵盖了您所描述的问题。我绝对建议你看。
基本方法是创建一个NSBlockOperation
可以自行检查-isCancelled
属性以在它被取消时提前返回的方法。然后您可以在 中取消操作viewDidDisappear
。
另一种方法是使用NSTimer
它也可以很容易地无效/取消。考虑到您的代码正在做什么,这实际上可能是您最简单的解决方案。