你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iosGCD基礎用法

iosGCD基礎用法

編輯:IOS開發綜合

困死了,更完就睡。運行一下有福利,懂的。我這裡就不上傳效果圖了,大家自己運行哈。。。晚安

 

 

 

#import "ViewController.h"

 

@interface ViewController ()

{

 

UIImageView *_view;

}

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

[super viewDidLoad];

 

 

//主隊列是和主線程關聯的一個隊列,主隊列是GCD提供的一個特殊隊列, 添加到主隊列中的任務,會在主線程中執行。 注意: 往主隊列中加任務,不管是同步的方式還是異步的方式,都不會創建線程。

// dispatch_get_main_queue(); 取到主隊列的方法

 

// 開啟子線程調用test方法

[self performSelectorInBackground:@selector(test) withObject:nil];

 

 

_view = [[UIImageView alloc]init];

_view.frame = CGRectMake(0, 0, self.view.bounds.size.width, 300);

[self.view addSubview:_view];

 

 

 

}

 

-(void)test

{

 

dispatch_queue_t queue = dispatch_queue_create("Concurrent Queue", DISPATCH_QUEUE_CONCURRENT);

 

dispatch_async(queue, ^{

NSLog(@"222 curThread = %@",[NSThread currentThread]);

});

 

 

dispatch_sync(queue, ^{

NSLog(@"333 cureThread = %@",[NSThread currentThread]);

});

 

}

 

 

 

//用戶點擊屏幕,從網絡上下載一張圖片,顯示到界面上

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

 

// 1. 取全局隊列

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

// 往並行隊列中添加下載圖片的任務

dispatch_async(queue, ^{

 

 

NSLog(@"1111 : curThread = %@", [NSThread currentThread]);

 

NSURL *url = [NSURL URLWithString:@"http://h.hiphotos.baidu.com/image/pic/item/35a85edf8db1cb13966db40fde54564e92584ba2.jpg"];

 

NSData *data = [NSData dataWithContentsOfURL:url];

 

UIImage *image = [UIImage imageWithData:data];

 

 

// 要求用GCD的方式,在主線程中設置要顯示的圖片。

// 好處: 在主線程中,可以直接使用子線程中的資源。使用起來方便,直觀。

//操作ui在主線程中執行

dispatch_async(dispatch_get_main_queue(), ^{

_view.image = image;

});

 

 

});

 

 

 

 

}

 

 

- (void)test11

{

// dispatch_queue_t queue = dispatch_get_global_queue(<#long identifier#>, <#unsigned long flags#>)

dispatch_queue_t queue = dispatch_queue_create("Concurrent Queue", DISPATCH_QUEUE_CONCURRENT);

 

dispatch_async(queue, ^{

 

// 做耗時操作

 

dispatch_async(dispatch_get_main_queue(), ^{

//操作UI界面

});

});

}

@end


  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved