iOS dispatch_async的用法

來源:互聯網
上載者:User

標籤:blog   http   os   使用   io   2014   問題   代碼   log   

GCD (Grand Central Dispatch) 是Apple公司開發的一種技術,它旨在最佳化多核環境中的並行作業並取代傳統多線程的編程模式。 在Mac OS X 10.6和IOS 4.0之後開始支援GCD。

使用GCD的一個理由就是方便,回想一下以前的多線程編程,我們會把非同步呼叫的代碼放到另外的一個函數中,並通過NSThread開啟新線程來啟動這段代碼。 這種跳來跳去的流程對於複雜的邏輯簡直就是一場災難。更糟糕的是,調用線程時的環境對非同步代碼是不可見的,如果我們需要當時的臨時變數的話只有兩個選擇: 儲存到類成員變數中或者作為參數傳遞過去。前者會造成很多莫名奇妙的無關類成員,而後者的功能過於有限。

GCD相對來說是一種更優雅的方式,如代碼所示:

當一段代碼被花括弧包裹並在開頭放置上尖號時,我們稱之為塊(block)。如果你學過C語言的話(實際上,block正是apple對C的一個擴充), 你可以認為這是一個增強型的函數指標。它不僅可以當做一個變數來回傳遞,還可以引用本身環境之外的變數。 更進一步地說,它是apple的C擴充中閉包的實現。在block裡引用的對象會自動被retain,因此你也不必擔心記憶體的問題。

希望可以對初學者有助深入理解!

iOS dispatch_async的用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.