gpt4 book ai didi

iphone - 在 Objective-C 中取消后台线程

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:25 24 4
gpt4 key购买 nike

如何取消 Objective-C 中的后台线程?

我这样调用后台线程:

[self performSelectorInBackground:@selector(setupThumbnails) withObject:nil];

它在滑动发生时被调用,对于每次滑动我想取消之前的后台线程请求。

最佳答案

为您的线程维护一个取消属性,并在您的线程中定期检查它。您需要使用锁或原子函数(由操作系统及其框架提供,而不是您自己实现!)来指示应取消线程。 atomic 联机帮助页中记录了系统提供的原子函数。

更好的方法是在 NSOperationQueue 而不是 NSThread 上使用 NSOperation。它仍然会使用线程在后台执行工作,但它让框架和操作系统代表您管理线程池,并且 NSOperation 本身有一个 isCancelled 属性,您可以检查 - 以及能够取消单个 NSOperation 或整个 NSOperationQueue 中的所有操作。

例如,您可以有一个“设置一个缩略图”操作,然后只需将一个这样的操作添加到队列中以供每个要设置的缩略图。操作系统和框架将合作管理用于执行这些操作的线程数,但您也可以设置队列的宽度以确保一次最多只运行那么多导入。如果用户取消,你可以要求队列取消所有未完成的操作。

关于iphone - 在 Objective-C 中取消后台线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327439/

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