1.關于GCD
Grand Central Dispatch是異步執(zhí)行任務的技術之一。我們先看一個簡單的示例:
1 - (void)doSomethingInBackground { 2 [self performSelectorInBackground:@selector(startWork) withObject:nil]; 3 } 4 5 - (void)startWork { 6 //長時間處理操作 7 NSLog(@"進行長時間處理"); 8 9 [self performSelectorOnMainThread:@selector(endWork) withObject:nil waitUntilDone:YES]; 10 } 11 12 - (void)endWork { 13 NSLog(@"完成工作并刷新頁面"); 14 }
這個示例實現(xiàn)的功能很簡單:在后臺線程中執(zhí)行長時間的處理,處理結束后,在主線程中使用處理結果。上面實現(xiàn)方式是使用NSObject類的performSelectorInBackground和performSelectorOnMainThread來實現(xiàn)的。下面我們用GCD的方式來實現(xiàn)同樣功能,做個對比:
1 dispatch_queue_t queue = dispatch_queue_create("com.gcd.test", DISPATCH_QUEUE_CONCURRENT); 2 dispatch_async(queue, ^{ 3 &n