GCD:Grand Central Dispathch,核心中央調度,是一種異步技術。可是它是系統級的。網絡
負責管理隊列,是線程之上的抽象層。隊列能夠並行或串行運行,可以在系統級自動管理和優化線程。把任務放到隊列裏執行,一個任務能夠是一個函數或一個block。多線程
如下的抽象度和底層函數級別從低到高。併發
已經拋棄了異步
幾乎不用async
多用於網絡下載,可是如今都用開源庫,例如:AFNetWorking函數
多用於本地解析數據。優化
GCD中的隊列稱之爲 dispatch queue,分類爲三類:url
- (void)syncDownload{ //同步下載,阻塞主線程 NSURL *url = [NSURL URLWithString:@""]; NSData *data = [[[NSData alloc] initWithContentsOfURL:url autorelease]; UIImage *image = [[[UIImage alloc] initWithData:data] autorelease]; _imageView.image = image; }
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //耗時的操做 NSURL *url = [NSURL URLWithString:@""]; NSData *data = [[[NSData alloc] initWithContentsOfURL:url autorelease]; UIImage *image = [[[UIImage alloc] initWithData:data] autorelease]; dispatch_async(dispatch_get_main_queue(),^{ //更新界面 _imageView.image = image; }); });