NSOperationQueue(多线程请求队列)

我的控件都是拖控件的

这里写图片描述

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageViewTp1;
@property (weak, nonatomic) IBOutlet UIImageView *imageViewTp2;
@property (weak, nonatomic) IBOutlet UIImageView *imageViewTp3;
@property (weak, nonatomic) IBOutlet UIImageView *imageViewTp4;

@property (retain)NSMutableArray* urlArr;
//创建请求队列
@property (retain)NSOperationQueue* queue;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //开辟空间
    _urlArr = [NSMutableArray new];

    NSString* urlString1 = @"http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg";
    NSString* urlString2 = @"http://pic55.nipic.com/file/20141208/19462408_171130083000_2.jpg";
    NSString* urlString3 = @"http://pic11.nipic.com/20101214/213291_155243023914_2.jpg";
    NSString* urlString4 = @"http://pic.58pic.com/58pic/14/27/45/71r58PICmDM_1024.jpg";

    [_urlArr addObject:urlString1];
    [_urlArr addObject:urlString2];
    [_urlArr addObject:urlString3];
    [_urlArr addObject:urlString4];
}

- (IBAction)loadingAction:(UIButton *)sender {
    //创建请求队列,队列放的是一个个异步请求线程
    _queue = [[NSOperationQueue alloc]init];
    for (NSInteger i = 0; i < 4; i++) {
        //创建请求线程
        NSArray* arr = @[_urlArr[i],[NSString stringWithFormat:@"%ld", i+10]];
        NSInvocationOperation* opertation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(downloadImage:) object:arr];
        //把线程加载到队列中,让队列去实现开始和结束
        [_queue addOperation:opertation];
    }
}
- (IBAction)suspendedAction:(UIButton *)sender {
    //取消所有线程的执行
    [_queue cancelAllOperations];
}

-(void)downloadImage:(NSArray*)arr
{
    NSURL* url = [NSURL URLWithString:arr[0]];
    NSData* data = [NSData dataWithContentsOfURL:url];
    UIImage* image = [UIImage imageWithData:data];
    UIImageView* imageView  = [self.view viewWithTag:[arr[1] integerValue]];
    imageView.image = image;
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值