#import "GCD.h"
@interface GCD ()
@PRoperty (strong,nonatomic) UIImageView * backImage;
@end
@implementation GCD
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view.
}
//mark- GCD常見代碼
/* 同步執行方法 */ - (void)gcdDemo1{
//創建隊列dispatch_queue_t q = dispatch_get_global_queue(0, 0);dispatch_queue_t q1 = dispatch_get_global_queue(0, 0);dispatch_queue_t q2 = dispatch_get_global_queue(0, 0);//把任務添加到隊列//定義任務void(^task1)() = ^{ NSLog(@"%@",[NSThread currentThread]);};//2.2 添加任務到隊列,并且會執行dispatch_sync(q, task1);dispatch_sync(q1, ^{ NSLog(@"111");});dispatch_sync(q2, ^{ NSLog(@"222");});}
/* 異步執行 */ -(void)gcdDemo2{
//創建隊列dispatch_queue_t q = dispatch_get_global_queue(0, 0);dispatch_queue_t q1 = dispatch_get_global_queue(0, 0);dispatch_queue_t q2 = dispatch_get_global_queue(0, 0);//把任務添加到隊列//定義任務void(^task1)() = ^{ NSLog(@"%@",[NSThread currentThread]);};//2.2 添加任務到隊列,并且會執行dispatch_async(q, task1);dispatch_async(q1, ^{ NSLog(@"111");});dispatch_async(q2, ^{ NSLog(@"222");});}
-(void)gcdDemo3{
//指定任務執行方法--異步dispatch_async(dispatch_get_global_queue(0, 0), ^{ //耗時操作 NSLog(@"%@",[NSThread currentThread]); NSURL *url = [[NSURL alloc]initWithString:@"http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg"]; NSData *data = [NSData dataWithContentsOfURL:url]; // 更新UI 負責在主線程上調度的隊列 這個地方用同步和異步都是一樣的 dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"%@",[NSThread currentThread]); self.backImage.image = [UIImage imageWithData:data]; });});}
@end
新聞熱點
疑難解答