gpt4 book ai didi

ios - GCD取消异步 block ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:24 26 4
gpt4 key购买 nike

我有在表格 View 单元格中加载图像的常规代码

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSImage *image = file.image;
dispatch_async(dispatch_get_main_queue(), ^{
imageView.image = image;
});
});

问题是当我滚动得太快时,我可以看到最后一个 block 在同一个 imageView 上多次触发。这看起来真的很奇怪。有什么办法可以在安排新操作之前取消所有以前为一个 imageView 安排的操作(假设它们都将具有唯一 ID)?

我的意思是,我想确保只执行最后一个计划的操作,并且所有之前计划的操作都应该被删除。这可以通过 Grand Central Dispatch 实现吗?或者我必须将自己的原子标志添加到 imageView 对象,并在调用 imageView.image = image;

之前检查是否设置了标志

最佳答案

要使用 GCD 来实现它,您必须使用自己的原子标志。

但是有一个更好的解决方案,您可以立即取消任务。它是一个 NSOperationQueue。

您可以在此链接下阅读所需的一切:http://www.raywenderlich.com/19788/how-to-use-nsoperations-and-nsoperationqueues

关于ios - GCD取消异步 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21795882/

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