/* 在iOS開發中,咱們常常須要須要監聽多個異步任務所有完成後的回調。此時須要用到調度組處理 場景:使用異步下載多張圖片的時候,可能須要下載完成所有圖片後才能計算image的高寬來佈局頁面。等等 */ #import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; #warning 注意事項: /* 1.dispatch_group_enter(group) 與dispatch_group_leave(group) 必須配對使用!!! 2.若是 dispatch_group_leave(group) 配對少了一個,則dispatch_group_notify 將永遠的等待下去不走回調 3.若是 dispatch_group_enter(group) 配對少了一個,則會形成程序的crash */ //1>建立一個調度組 dispatch_group_t group = dispatch_group_create(); //2.使用調度組 dispatch_group_enter(group); dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSLog(@"%@ --- 執行了任務1",[NSThread currentThread]); dispatch_group_leave(group); }); dispatch_group_enter(group); dispatch_async(dispatch_queue_create("111", DISPATCH_QUEUE_CONCURRENT), ^{ NSLog(@"%@ --- 執行了任務2",[NSThread currentThread]); dispatch_group_leave(group); }); //3>調度組監聽,監聽結果在設置的dispatch_get_main_queue 中回調 dispatch_group_notify(group, dispatch_get_main_queue(), ^{ NSLog(@"%@ --- 監聽到了任務所有執行完畢",[NSThread currentThread]); }); } @end