//异步函数+全局并发队列 嵌套 异步函数+主队列
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *button;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 定义属性名称的时候,一般不要以new开头.如果以new开头了,就不要以驼峰命名.
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// 1. 在子线程下载图片
// (异步函数 + 全局并发队列) 内部嵌套一个 (异步函数 + 主队列)
// 最常用的一种组合,需要掌握.
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// 下载图片
NSURL *url = [NSURL URLWithString:@"http://23.27.119.120/uploads/allimg/150814/2-150Q40Q03TE.jpg"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
// 回到主线程更新UI/显示图片
dispatch_async(dispatch_get_main_queue(), ^{
// 主线程
// 给按钮设置图片
// 如果直接给按钮设置图片,需要改变按钮的类型为 custom
// [self.button setImage:image forState:UIControlStateNormal];
// 如果是设置按钮的背景图片,不需要将按钮类型改变
[self.button setBackgroundImage:image forState:UIControlStateNormal];
});
});
// 2. 在主线程更新UI
}
@end