文档章节

iOS多线程开发

Virgo_only
 Virgo_only
发布于 2016/07/14 11:14
字数 431
阅读 8
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

- (IBAction)begin:(id)sender {
    
    NSArray *urlArray = @[
                          @"http:/www.planetware.com/photos-large/F/france-paris-eiffel-tower.jpg",
                          @"http://adriatic-lines.com/wp-content/uploads/2015/04/canal-of-Venice.jpg",
                          @"http://algoos.com/wp-content/uploads/2015/08/ireland-02.jpg",
                          @"http://bdo.se/wp-content/uploads/2014/01/Stockholm1.jpg"
                          ];

    //第一种 GCD 调度队列
  /*  dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
    dispatch_async(queue, ^{
        NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[0]]];
        UIImage *image1 = [[UIImage alloc]initWithData:data1];
        dispatch_async(dispatch_get_main_queue(), ^{
            self.IM1.image = image1;
        });
    });
    
    dispatch_async(queue, ^{
        NSData *data2 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[1]]];
        UIImage *image2 = [[UIImage alloc]initWithData:data2];
        dispatch_async(dispatch_get_main_queue(), ^{
            self.IM2.image = image2;
        });
    });
    
    
    dispatch_async(queue, ^{
        NSData *data3 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[2]]];
        UIImage *image3 = [[UIImage alloc]initWithData:data3];
        dispatch_async(dispatch_get_main_queue(), ^{
            self.IM3.image = image3;
        });
    });
    
    
    dispatch_async(queue, ^{
        NSData *data4 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[3]]];
        UIImage *image4 = [[UIImage alloc]initWithData:data4];
        dispatch_async(dispatch_get_main_queue(), ^{
            self.IM4.image = image4;
        });
    });*/
    
    //第二种 NSOperationQueue
  /*  NSOperationQueue *queue1 = [[NSOperationQueue alloc]init];
    
    [queue1 addOperationWithBlock:^{
        NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[0]]];
        UIImage *image1 = [[UIImage alloc]initWithData:data1];
        [[NSOperationQueue mainQueue]addOperationWithBlock:^{
            self.IM1.image = image1;
        }];
    }];
    
    [queue1 addOperationWithBlock:^{
        NSData *data2 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[1]]];
        UIImage *image2 = [[UIImage alloc]initWithData:data2];        [[NSOperationQueue mainQueue]addOperationWithBlock:^{
            self.IM2.image = image2;
        }];
    }];

    
    [queue1 addOperationWithBlock:^{
        NSData *data3 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[2]]];
        UIImage *image3 = [[UIImage alloc]initWithData:data3];

        [[NSOperationQueue mainQueue]addOperationWithBlock:^{
            self.IM3.image = image3;
        }];
    }];

    
    [queue1 addOperationWithBlock:^{
        NSData *data4 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[3]]];
        UIImage *image4 = [[UIImage alloc]initWithData:data4];
        [[NSOperationQueue mainQueue]addOperationWithBlock:^{
            self.IM4.image = image4;
        }];
    }];*/
    
    // 第三种  NSBlockOperation
    
    NSOperationQueue *queue3 = [[NSOperationQueue alloc]init];
    NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{
        NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[0]]];
        UIImage *image1 = [[UIImage alloc]initWithData:data1];
        [[NSOperationQueue mainQueue]addOperationWithBlock:^{
            self.IM1.image = image1;
        }];
    }];
    operation1.completionBlock = ^{
       NSLog(@"Operation 1 completed");
    };
    [queue3 addOperation:operation1];
    
    NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{
        NSData *data2 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[1]]];
        UIImage *image2 = [[UIImage alloc]initWithData:data2];        [[NSOperationQueue mainQueue]addOperationWithBlock:^{
            self.IM2.image = image2;
        }];
    }];
    operation2.completionBlock = ^{
        NSLog(@"Operation 2 completed");
    };
    [queue3 addOperation:operation2];
    
    NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{
        NSData *data3 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[2]]];
        UIImage *image3 = [[UIImage alloc]initWithData:data3];
        
        [[NSOperationQueue mainQueue]addOperationWithBlock:^{
            self.IM3.image = image3;
        }];
    }];
    operation3.completionBlock = ^{
        NSLog(@"Operation 3 completed");
    };
    [queue3 addOperation:operation3];
    
    NSBlockOperation *operation4 = [NSBlockOperation blockOperationWithBlock:^{
        NSData *data4 = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlArray[3]]];
        UIImage *image4 = [[UIImage alloc]initWithData:data4];
        [[NSOperationQueue mainQueue]addOperationWithBlock:^{
            self.IM4.image = image4;
        }];
    }];
    
    operation4.completionBlock = ^{
        NSLog(@"Operation 4 completed");
    };
    [queue3 addOperation:operation4];
    


}

参考文档:http://www.cocoachina.com/ios/20160201/15179.html

本文转载自:http://www.cocoachina.com/ios/20160201/15179.html

Virgo_only
粉丝 7
博文 41
码字总数 12828
作品 0
石家庄
程序员
私信 提问
如何判断你是合格的高级iOS开发工程师?

前言 随着移动互联网的高速发展泄洪而来,有意学习移动开发的人越来越多了,竞争也是越来越大,需要学习的东西很多。如何才能在激烈的移动开发者竞争中一枝独秀,成为一名真正合格的高级iOS...

_小迷糊
2018/05/26
0
0
iOS开发的你,现在准备脱坑还是继续进阶呢?

序言 我相信很多人都在说,iOS行业不好了,iOS现在行情越来越难了,失业的人比找工作的人还要多。失业即相当于转行,跳槽即相当于降低自己的身价。那么做iOS开发的你,你是否在时刻准备着跳槽...

_小迷糊
2018/10/31
0
0
为何提高iOS技能?

如题,我的困惑 去年11月份自学,今年3月份辞职正式转型做iOS工作,但是项目一直到6月份都是自己做,感觉提升很慢,算是个中级偏下水平 求教iOS朋友,你们是怎么提升自己的? 书单 《Effecti...

卧龙小
2015/09/18
1K
11
【书坊赠书福利——第二期】《iOS 8开发指南》

本周是人邮IT书坊赠书的第二期,第一期参与度极高,微信君在此感谢你们的支持,第一期获奖赠书已全部寄出。 本周赠品 本周,微信君给大家推荐@人民邮电出版社-信息技术分社 刚刚上架的新书《...

生气的散人
2014/09/23
397
0
iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码

iOS精选源码 iOS高仿微信完整项目源码(http://www.code4app.com/thread-14695-1-1.html) Khala: Swift 编写的iOS/macOS 路由框架(http://www.code4app.com/thread-31586-1-1.html) 微信左滑删......

Android爱开源
01/03
45
0

没有更多内容

加载失败,请刷新页面

加载更多

mars-config 动态配置管理

mars-config 码云地址:https://gitee.com/fashionbrot/mars-config 介绍 spring mvc 、springboot 动态配置系统。http 轮训方式 更新 动态配置 软件架构 软件架构说明 后端使用技术 :sprin...

fashionbrot
14分钟前
7
0
女朋友玩吃鸡手游被开挂老哥骗炮,我见义勇为将骗子绳之以法

大家好,我是乔哥。 晚上10点以后下班后我回到自如出租房里面,开始处理公众号粉丝发来的消息,一条一条处理,突然看到了这么几条消息,吸引了我的眼球: 然后我就和这位女粉丝小红(化名)聊...

gzc426
19分钟前
2
0
两款软件

fadetop保护眼睛软件 Snipaste截图软件

伟大源于勇敢的开始
46分钟前
6
0
06.全局锁和表锁

根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。 全局锁 全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是flush tables with read lock(FTW...

scgaopan
今天
7
0
图解安装CentOS8

最近正式发布了CentOS8!迫不及待地准备下载了CentOS8镜像,准备体验下,工作繁忙无暇理会。 今天抽空安装体验下~ 可从CentOS官网下载:https://centos.org/download/ 为了快速可以选择从国...

技术训练营
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部