- (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