你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> GCD補充

GCD補充

編輯:IOS開發綜合

GCD補充

有 3 種分派隊列:

Main Queue

這個隊列在主線程上執行它的所有任務,Cocoa 和 Cocoa Touch 允許程序員在主線程上調用一切UI- related 方法。使用 dispatch_get_main_queue 函數檢索到主隊列的句柄。

 


Concurrent Queues為了執行異步和同步任務,你可以在 GCD 中檢索到這寫隊列。多個並發隊列能夠輕而易舉的並行執行多

個任務,沒有更多的線程管理,酷!使用 dispatch_get_global_queue 函數檢索一個並發隊列的句柄。

 


 Serial Queues

無論你提交同步或者異步任務,這些隊列總是按照先入先出(FIFO)的原則來執行任務,這就意味著它 們一次執行一個 Block Object。然而,他們不在主線程上運行,所以對於那些要按照嚴格順序執行並不阻塞主 線程的任務而言是一個完美的選擇。使用 dispatch_queue_create 函數創建一個串行隊列。一旦你使用完整隊 列,必須使用 dispatch_release 函數釋放它

 

 

 

這兒簡單總結關於 Block Objects 變量你必須了解的特點:

1、局部變量在 Block Objects 和 Objective-C 方法中的工作原理非常相似。

 


2、對於內聯 Block Objects,局部變臉不僅包含 Block 內部定義的變量,並且包含在 Block Objects 執行方法中定義的變量。

 


3、你不能參考 self;在 Objective-C 類中運行的獨立 Block Objects,如果你需要訪問 self, 就必須把 Object作為參數傳遞到 BlockObject

 


4、只有當 self 出現在創建 Block Object 的詞法范圍內,你可以在內聯 Block Object 內參考 self。

 


5、對於內聯 Block Objects,那些在 BlockObject 執行過程中定義的局部變量是可讀寫的,換句話說,對於Block Objects 自身的局部變量來說,Block Objects 有個讀寫存取。

 


6、對於內聯 Block Objects,實現 Object 的 Objective-C 方法的局部變量只能從中讀取,不能寫入。不過還有一個例外,如果定義它們通過 __block 存儲類型定義的話,Block Object 可以寫入此類的變

量。

 


7、假設你有一個類 NSObject 的 Object,並且在這個 Object 的執行中你使用了一個 Block Object 與 GCD相連,那麼在這個 Block Object 內部,你會有一個存儲來讀取那個支持你的 Block 執行的 NSObject內部的聲明屬性。

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved