『導(dǎo)言』
iOS開發(fā)中如何用NSOperation
進(jìn)行快速的下載
圖片质和,并且圖片顯示
?其中子線程
和主線程
如何通信稚字?
一饲宿、步驟:
1.建立隊(duì)列Queue
2.封裝操作NSBlockOperation
2.1 dataWithContentsOfURL下載數(shù)據(jù)
2.2 addOperation方法從子線程進(jìn)入主線程
3.將操作Operation添加到隊(duì)列Queue
二、代碼:
// 1 開子線程
NSOperationQueue *queue =[[NSOperationQueue alloc] init];
//2.封裝操作
NSBlockOperation *op1 =[NSBlockOperation blockOperationWithBlock:^{
//2.1下載圖片
NSURL *url = [NSURL URLWithString:@"http://f.hiphotos.baidu.com/image/pic/item/1f178a82b9014a90330244a7a1773912b31beee8.jpg"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image =[UIImage imageWithData:data];
NSLog(@"Download ----%@",[NSThread currentThread]);
//2.2更新UI;進(jìn)入主線程Main
[[NSOperationQueue mainQueue]addOperationWithBlock:^{
self.iconImageView.image = image;
NSLog(@"UI ----%@",[NSThread currentThread]);
}];
}];
//3 添加操作到隊(duì)列
[queue addOperation:op1];
三胆描、分析:
- 打印結(jié)果:
/* 打印結(jié)果:
2017-02-22 15:29:29.334 11-掌握-NSOperation線程間通信[1040:50068] Download ----<NSThread: 0x608000267f80>{number = 4, name = (null)}
2017-02-22 15:29:29.335 11-掌握-NSOperation線程間通信[1040:49699] UI ----<NSThread: 0x608000076e80>{number = 1, name = main}
*/
- 分析結(jié)果
1.number瘫想!=1 ,下載圖片在子線程
2.number = 1昌讲,更新UI圖片顯示在主線程Main