繁体   English   中英

如何在GCD中的下一个块之前取消上一个块? [重复]

how to cancel previous block by the coming block in GCD? [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

可能重复:
如何杀死/暂停/关闭GCD中的异步块?

我正在做一个图像处理并显示结果图像的应用程序。 我使用UIScrollView来让用户滚动所有图像,因为该图像不是标准的jpg或png,因此加载需要花费时间。 我使用GCD异步加载,完成分配到主队列后显示。 摘录如下:

- (void)loadImage:(NSString *)name
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        UIImage *image = [Reader loadImage:name];
        dispatch_sync(dispatch_get_main_queue(), ^{
            [self displayImage:image];
        });
    });
}

这在多数情况下效果很好。 但是,如果滚动得如此之快,以至于该方法可能在要显示的第一个加载图像之前被调用几次。然后,当您停止时,当前imageView将快速显示先前的几幅图像,然后最后显示当前图像。 由于内存问题很容易崩溃。

我想知道是否有一种方法可以通知队列取消先前的队列(如果队列中有一个新的块)(这意味着在上一个块完成之前再次调用该方法)? 或其他更好的建议?

提前致谢。

1 个回复

您正在使用类方法加载图像,但是同时从各个线程(通过块)调用它们,因此我希望您为此设计了Reader。 无论如何,我建议您做的是创建一个可变集,并且每当您向Reader发送消息以加载图像时,首先将名称添加到该集中。 返回时,删除名称,但在主线程上删除(在mainQueue或主线程上添加和删除完成)。

现在,当您要停止处理一个或所有图像时,请向Reader添加一个新的“ cancelLoad”方法,并向其发送一个您希望其停止处理的名称的列表。

2 在下一个上一个单击jquery上滑动div块

我想知道如何通过单击下一个控件来滑动块 - 上一个。 我的主要部分是1400px的宽度&在一些儿童div下有300px宽度与浮动。 在屏幕上我想显示3个块现在正在下一个按钮单击我想要这个块滚动。 CSS ...

4 为什么下一个块元素的框从上一个块元素的内容而不是前一个元素的边界开始?

当我发现后续的块元素是从上一个块元素的内容开始而不是紧接在上一个块元素的边距之后,我正在编写一些HTML并设置其样式。 我有一个块元素和一个内联元素作为孩子。 内联元素在底部有一个填充,并有一个边框。 我在第一个之后直接创建了另一个block元素,检查此页面后,我注意到了上面的内容。 我 ...

2019-01-02 00:27:18 1 40   html/ css
5 在块中显示下一个ViewController

我有下一个简单的代码,用于从服务下载信息。 当请求返回成功时,我需要显示下一个视图。 我想知道-此代码是正确的,还是必须在另一个位置而不是在块中创建并显示viewcontroller? 谢谢 ...

6 取消下一个上一个功能

有谁知道下一个/上一个组件可以在AVR的WebVR内工作,所以如果我正在查看一个ID为entity1的实体,位置为0 0 -3,那么我单击下一步,然后查看一个为id实体2的实体位置0 0 -3替换了先前的实体,先前的实体返回位置y -3并缩放0 0 0,我再次单击下一步,现在我正在查看ID为实体 ...

2019-01-19 07:57:02 0 66   aframe
7 如何跳过块中的任何错误并继续下一个块项目?

我创建了 Reader、Processor 和 Writer。 我将块的大小定义为 5。我在处理器中为每个项目执行一个操作。 我在 Writer 中有两个事务。 更新所有 5 个项目的数据库,并在另一个地方确认所有 5 个项目的交易。 我的项目不相互依赖,所以如果其中一个失败,其他项目不在乎,他们想 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM