【发布时间】:2014-12-25 16:16:57
【问题描述】:
我有这个代码:
_myQueue = dispatch_queue_create("com.myapp", DISPATCH_QUEUE_SERIAL);
_mainQueue = dispatch_get_main_queue();
还有很多需要几秒钟(或几分钟)的块
dispatch_async(_myQueue,
^{
if(canRun){
dispatch_async(_mainQueue,^{/* updating interface here */});
// code here
}
});
我的应用程序有一个“停止”按钮来尝试停止所有工作,BOOL“canRun”帮助我执行所有块而不做任何事情.....但我总是必须等待每个块的完成直到队列到达 0。 有没有办法立即“清理”队列而不是这样做? 目的是在不关闭和重新打开应用程序的情况下停止进程并重新开始。 该项目在 ARC 下运行。
【问题讨论】:
-
为什么不使用 NSOperationQueue?你只是在重新发明一个你已经被赋予的优秀轮子......
-
也许这篇文章有用? stackoverflow.com/questions/9546385/…
-
是的,我发现用这种方式更新界面很容易......
-
伙计们我承认我从未使用过它,但在这里阅读:stackoverflow.com/questions/12660706/…,他们似乎有同样的问题,一切都必须完成。我错了?谢谢
-
我的意思是我需要在每个块中都有一个布尔值,而无需重新发明我正在编写更少代码行的井..
标签: macos cocoa automatic-ref-counting