【发布时间】:2012-08-01 13:01:44
【问题描述】:
我有课。我正在其中运行一些后台任务(使用 performselectorInBackground),当这些功能最终完成时,我将添加一个子视图。但在某些情况下,我会在完成后台任务之前释放并设置 nil 类的对象。
事件然后这些后台任务没有被杀死并通过添加子视图来更新我的 UI。
我如何杀死对象启动的所有任务。
【问题讨论】:
标签: objective-c ipad background
我有课。我正在其中运行一些后台任务(使用 performselectorInBackground),当这些功能最终完成时,我将添加一个子视图。但在某些情况下,我会在完成后台任务之前释放并设置 nil 类的对象。
事件然后这些后台任务没有被杀死并通过添加子视图来更新我的 UI。
我如何杀死对象启动的所有任务。
【问题讨论】:
标签: objective-c ipad background
performSelectorInBackground 是一种设置并忘记的方法。你不能取消它们。但是,您有两个选择。您可以转到dispatch_* 键入命令。或者,您可以在后台循环中使用布尔值来检查它是否应该自行取消。然后,当您需要取消它时,只需将该 bool 设置为 YES,然后在下一个循环中您可以返回或类似的内容。
【讨论】:
NSOperationQueue 是取消任务的更好选择。只需让对象创建一个所有操作都添加到的队列,并在应该全部取消时调用[myQueue cancelAllOperations];。然而,已经运行的操作必须检查它们是否使用[self isCancelled] 取消,以便在它们开始后停止执行。