objective-c-ios 关于循环异步的问题

问题描述

ios 关于循环异步的问题

for (int i = 0; i < array.count; i++) {

[_stagePhotoView sd_setImageWithURL:[[NSURL alloc] initWithString:[NSString stringWithFormat:@"%@?imageView/w/4",array[i]]] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
[_imageArray addObject:image];
}];
}

这是一个循环里面以一个异步去取缓存图片然后存到一个数组内存中 但是这会有一个问题 以为是异步 所以有时候图片没拿到 循环就直接往下走 有什么办法 让循环一次必须在异步取完图片之后再循环下一次 真心求解答 或者我的做法本身就有问题 能给一个更好的思路吗 在线等

解决方案

异步就是这样啊,那你就用同步阻塞操作呗?或者异步的同时遍历看到哪里图片没有请求回来,就反复请求

解决方案二:

你应该在异步的block中处理图片下载下来以后的动作 比如更新图片到界面 这就是异步处理流程

解决方案三:

那就不要异步呀 在异步里面加同步就好了 ! 还有疑问加我QQ:东方执念-490986262

解决方案四:

可以转化成类似这样的形式:

 /**
 *  异步转同步加载图片
 *
 *  @param array 图片名称数组
 *  @param i     当前访问的数组的位置
 */
- (void)getImageArrayWithImageNames:(NSArray *)array withIndex:(NSUInteger)i{
    if (i >= array.count) {

        //图片加载完成
        //继续其他操作
        return;
    }
    __weak SignetController *weakSelf = self;
    [_stagePhotoView sd_setImageWithURL:[[NSURL alloc] initWithString:[NSString stringWithFormat:@"%@?imageView/w/4",array[i]]] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        [_imageArray addObject:image];
        if (weakSelf != nil)
        [self getImageArrayWithImageNames:array withIndex:i+1];
    }];
}

解决方案五:

同步阻塞即可,或者 block 也可以的

时间: 2024-09-11 23:27:59

objective-c-ios 关于循环异步的问题的相关文章

ios-谁能用简单的、真实的、代码的形式解释iOS的循环引用

问题描述 谁能用简单的.真实的.代码的形式解释iOS的循环引用 网上关于iOS循环引用论述最多的就是那个什么a引用了bb引用了cc引用了ba release之后,b c泄漏 完全没理解,b和c个自release对方不就完了么??? 谁能用真实代码的例子告诉我什么是循环引用吗?什么ObjectA *a = [ObjectA alloc];ObjectA *b = [a copy];这样的伪代码就不要了!因为一般ObjectA都没有实现copy方法!

iOS闭包循环引用精讲

前言 本篇文章精讲iOS开发中使用Block时一定要注意内存管理问题,很容易造成循环引用.本篇文章的目标是帮助大家快速掌握使用block的技巧. 我相信大家都觉得使用block给开发带来了多大的便利,但是有很多开发者对block内存管理掌握得不够好,导致经常出现循环引用的问题.对于新手来说,出现循环引用时,是很难去查找的,因此通过Leaks不一定能检测出来,更重要的还是要靠自己的分析来推断出来. 声景一:Controller之间block传值 现在,我们声明两个控制器类,一个叫ViewContr

ios UIScrollView 循环滑动

demo地址 1:   http://download.csdn.net/detail/take8619702/4767432 demo地址 2:   http://download.csdn.net/detail/take8619702/4767443 demo地址 3:   http://download.csdn.net/detail/take8619702/4767459 1.普通分页滑动     myScrollView = [[UIScrollViewalloc]initWithFr

iOS - NSTimer循环引用的解决办法

发生场景 在 Controller B 中有一个 NSTimer @property (strong, nonatomic) NSTimer *timer;  你创建了它,并挂载到 main runloop self.timer = [NSTimer scheduledTimerWithTimeInterval:1   target:self selector:@selector(timerAction:) userInfo:nil repeats:true];  然后退出 Controller

ios block-IOS block强引用循环问题,下面的代码为什么能避免强引用循环

问题描述 IOS block强引用循环问题,下面的代码为什么能避免强引用循环 下面的代码为什么能避免强引用循环? cell.thumbnailView.image = item.thumbnail; __weak BNRItemCell *weakCell = cell; cell.actionBlock = ^{ NSLog(@"Going to show image for %@", item); BNRItemCell *strongCell = weakCell; if ([U

iOS利用UIScrollView实现无限滚动效果_IOS

前言 众所周知UIScrollView 的无限滚动主要应用在图片轮播器.欢迎界面等场景.它的原理是在要显示的图片前后各加一张图片即在第一张图片之前放最后一张图片,在最后一张图片之后放第一张图片,然后在滚动到边缘的时候,巧妙的过渡一下就可以"瞒天过海","以假乱真"的造成无限滚动的假象.网络上有很多只用三张或两张图片实现的方法,效率比这个方法高,但实现起来稍微麻烦一点,有兴趣的可以去深入研究. 实现步骤       1.根据需求准备几张图片,在网上找了5张图片,分别命

多种JQuery循环滚动文字图片效果代码_jquery

自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可以的,如下(效果图上传后都加速了,实际效果比这个要慢很多):  html代码如下: <!doctype html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <

node+websocket 实时聊天实例教程

 最近,负责的游戏需要一个聊天功能,由于是实时的聊天,便想到了现在挺火的websocket,折腾了一天一夜,总算有点眉目了,现在总结如下: websocket 是html5一个通信协议,可以实时通信.本例的聊天是用的socket的框架socket.io实现的,socket.io 集成了websocket和xhr-polling(长轮询)等多种通信方式 1.搭建node环境 从node官网,本人选择的window的msi 一键安装.安装完node 之后还需配置系统环境变量 PATH 属性里添加上你

要出发公司笔试题

前言 招聘高峰期来了,大家都非常积极地准备着跳槽,那么去一家公司面试就会有一堆新鲜的问题,可能不会,也可能会,但是了解不够深.本篇文章为群里的小伙伴们去要出发公司的笔试题,由笔者整理并提供笔者个人参考答案.注意,仅供参考,不代表绝对正确. 参考答案不唯一,大家可以根据自己的理解回答,没有必要跟笔者的一样.参考笔者的答案,也许给你带来灵感! 题目照 1.编程规范问题 这题看不清楚,不过可以看得出来是编程规范问题.所以呢,笔者也就没有办法说明哪些不合理了.不过笔者曾经为公司的出过一个编程规范文档,后