你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> ios多線程

ios多線程

編輯:關於IOS

ios中多線程有三種,NSTread, NSOperation,GCD

  這篇就講講GCD的基本用法   平時比較多使用和看到的是:   復制代碼 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{           //異步操作代碼塊           dispatch_async(dispatch_get_main_queue(), ^{               //回到主線程操作代碼塊           });       }); 復制代碼 比較多的用於更新ui操作   比如從數據庫獲取數據需要花較長的時間,又不希望卡主線程,就把獲取數據庫數據操作放在異步操作代碼快中,等獲取結束,回調主線程,更新ui,在主線程操作代碼塊中進行操作       下面我們來解析一下這代碼塊中的每個方法:   復制代碼 dispatch_async(<#dispatch_queue_t queue#>, <#^(void)block#>)   表示異步操作,與之對應的是   dispatch_sync(<#dispatch_queue_t queue#>, <#^(void)block#>),同步操作,block中的代碼執行完了才能執行後面的操作   方法中第一個參數 dispatch_queue_t queue 表示隊列,無非是兩種:串行和並行,另外可自建串行或並行隊列 獲取系統串行隊列,也就是主線程串行隊列:   dispatch_get_main_queue()   獲取系統並行隊列:   dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)   其中第一個參數,是隊列優先級,有四種:   #define DISPATCH_QUEUE_PRIORITY_HIGH 2   #define DISPATCH_QUEUE_PRIORITY_DEFAULT 0   #define DISPATCH_QUEUE_PRIORITY_LOW (-2)   #define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN   會根據優先級高低,進行處理   自建隊列:   dispatch_queue_create("com.example.serial", NULL);   第一個參數,文檔規范說: A string label to attach to the queue.這個字符串需要唯一性,一般是以上形式呈現   第二個參數傳NULL或者 DISPATCH_QUEUE_SERIAL 表示串行 傳 DISPATCH_QUEUE_CONCURRENT表示並行   當執行結束,必須要有 dispatch_release(),將隊列釋放 復制代碼 最近看到一篇文章講到GCD, 比較深入,還有些沒有理解,以上我描述的內容是GCD較為基礎的用法,一般程序也就用到這些
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved