08-GCD常用方法
生活随笔
收集整理的這篇文章主要介紹了
08-GCD常用方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#GCD常用方法
一.延遲執(zhí)行方法
NSTimer
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(demo) userInfo:nil repeats:NO];performSelector:withObject:afterDelay:
[self performSelector:@selector(demo) withObject:nil afterDelay:3.0];GCD
// 該方法中, 會(huì)根據(jù)傳入的隊(duì)列來(lái)決定回掉block在哪個(gè)線程中執(zhí)行 // 如果傳入的是主隊(duì)列, 那么block會(huì)在主線程調(diào)用 // 如果傳入的是全局隊(duì)列, 那么block會(huì)在子線程中調(diào)用dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_global_queue(0, 0), ^{NSLog(@"3秒之后執(zhí)行 %@", [NSThread currentThread]); });二.一次性代碼方法
- 整個(gè)程序運(yùn)行過(guò)程中只會(huì)執(zhí)行一次
- 注意 千萬(wàn)不呢過(guò)把一次性代碼當(dāng)做懶加載來(lái)使用
三.快速遍歷
- dispatch_apply(size_ t, dispatch_ queue_ t, ^(size_ t) block);
- 參數(shù)解釋
- 第一個(gè)參數(shù)(size_ t ):需要遍歷幾次
- 第二個(gè)參數(shù)(dispatch_ queue_ t):決定第三個(gè)參數(shù)的block在哪個(gè)線程中執(zhí)行
- 第三個(gè)參數(shù)(^(size_t)block):回掉
快速遍歷應(yīng)用--多個(gè)文件的剪切(迅雷下載)
- 1.定義變量記錄原始文件夾和目標(biāo)文件夾的路徑
- 2.取出原始文件夾中所有文件
- 3.開(kāi)始卡拷貝文件
- 3.1生成原始文件的絕對(duì)路徑
- 3.2生成目標(biāo)文件的絕對(duì)路徑
- 3.3利用NSFileManager拷貝文件
- 方法一: 使用for循環(huán)一個(gè)一個(gè)移動(dòng)文件
- 方法二: 使用GCD的快速遍歷 同時(shí)剪切文件
四.小案例(柵欄和多線程的應(yīng)用)
柵欄
- 柵欄的功能
- 攔截前面的任務(wù),只有先添加到隊(duì)列中的任務(wù)執(zhí)行完畢,才會(huì)執(zhí)行柵欄中添加的任務(wù)
- 只有執(zhí)行完?yáng)艡?才會(huì)執(zhí)行后面的任務(wù)
- dispatch_barrier_async()
- 注意
- 如果想要使用柵欄,那么就不能使用全局并發(fā)隊(duì)列
- 如果想使用柵欄,所有的任務(wù)必須添加到同一隊(duì)列中
--
dispatch_group _async()組
- 應(yīng)用場(chǎng)景: 任務(wù)之間有依賴關(guān)系的時(shí)候用
- 柵欄比組多了一個(gè)對(duì)后面任務(wù)執(zhí)行順序的限制功能
- 只要將任務(wù)和隊(duì)列放入group中,group中的任務(wù)之行為完畢,group就會(huì)發(fā)出一個(gè)通知
- dispatch_group_notify(group,queue,^{});
- 注意 應(yīng)放入同一個(gè)組中
--
案例
- 需求: 下載兩張圖片,合成一張之后展示在UI界面上
- 分析
- 開(kāi)啟一個(gè)線程,下載第一張圖片
- 開(kāi)啟新線程,下載第二張圖片
- 開(kāi)啟新線程,合成圖片
- 開(kāi)啟圖形上下文
- 將第一張圖片畫(huà)上去
- 將第二張圖片畫(huà)上去
- 從上下文中獲取繪制好的圖片
- 關(guān)閉上下文
- 回到主線程更新UI
轉(zhuǎn)載于:https://www.cnblogs.com/KrystalNa/p/4780327.html
總結(jié)
以上是生活随笔為你收集整理的08-GCD常用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 精品软件 推荐 ACPsoft PDF
- 下一篇: oracle中触发器的讲解