gpt4 book ai didi

iphone - 取消调度队列

转载 作者:行者123 更新时间:2023-12-03 19:44:31 24 4
gpt4 key购买 nike

我在应用程序中使用 Grand Central Dispatch 以便在后台运行方法。该方法根据用户的输入计算一些数学数据,并且需要一些时间才能完成。请记住,它不使用互联网。

每当主视图加载时,我都会运行这个后台“计算”方法(这是一个调度队列)。问题是,如果用户在该方法在后台运行时切换应用程序中的 View ,应用程序就会崩溃。

当用户切换 View 时,有什么方法可以“取消”队列/停止代码块运行吗?另一种思考方式是查看 iPhone Weather.app。当天气加载时,它会在后台下载数据,并且在下载时按角落里的小信息按钮不会使应用程序崩溃。

谢谢!

queue = dispatch_queue_create("com.mycompany.myqueue", 0);

dispatch_async(queue, ^{
//make some complicated calculations
});

最佳答案

一旦 block 开始执行,暂停队列本身不会有任何帮助。但是您可以使用 __block 限定符定义一个名为“cancel”的 BOOL,然后在计算的适当阶段(在每次迭代或其他段),您可以在继续之前检查“cancel”是否仍然为 NO。

关于iphone - 取消调度队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8235801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com