Objective-C代碼塊(Block)實質(zhì)與實現(xiàn)探究

本文代碼示例多出自《Objective-C高級編程 iOS與OS X多線程和內(nèi)存管理》,也有多處解釋參考原文。也有部分內(nèi)容參考于《Effective Objective-C 2.0 編寫高質(zhì)量iOS與OS X代碼的52個有效方法》

Block是一種特殊的,可以生存在棧區(qū)(叫棧塊)、堆區(qū)(叫堆塊)、以及程序數(shù)據(jù)區(qū)域即全局區(qū)(叫全局塊)的Objective-C對象。在堆區(qū)的Block也有引用計數(shù),適用于ARC的內(nèi)存管理機制。

clang(LLVM編譯器)能把Objective-C轉(zhuǎn)換成可讀源代碼(C++)的功能:

clang -rewrite-objc 源代碼文件名

</br>
因為原文章過長,誰都很難有勇氣一口氣讀完,故把其分為以下幾個部分:

1、Block僅用作輸出語句的情況

</br>

2、Block截獲自動變量的情況

</br>

3、Block截獲靜態(tài)變量的情況

</br>

4、Block中使用__block變量的情況

</br>

5、Block截獲對象的情況

</br>

6、Block使用__block?變量,且該變量為對象的情況

</br>

7、Block存儲域

</br>

8、__block變量存儲域

</br>

9、__block變量的成員變量__forwarding存在的意義
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容