理解“塊(block)”這一概念--Effective筆記

1,塊是C,C++,Objective-C中的詞法閉包。
塊可以看作c里的函數(shù)指針,它將方法當(dāng)作對象那樣進(jìn)行傳遞。其實(shí)塊是一種代替函數(shù)指針的語法結(jié)構(gòu),原來使用函數(shù)指針時,需要用“不透明的void指針”來傳遞狀態(tài)。而改用塊之后,則可以把原來用標(biāo)準(zhǔn)c語言特性所編寫的代碼封裝成簡明且易用的接口。

2,塊可接收參數(shù),也可返回值。

3,塊可以分配在?;蚨焉?,也可以是全局的。分配在棧上的塊可拷貝到堆里,這一的話,就和標(biāo)準(zhǔn)的Objective-C對象一樣,具備引用計(jì)數(shù)了。

定義塊的時候,其所占用的內(nèi)存區(qū)域是分配在棧中的。

當(dāng)使用copy下,就可以把塊從棧復(fù)制到堆了。

全局的塊相當(dāng)于單例,不會被系統(tǒng)回收。
如:void(block)()={
NSLog(@"block");
};

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

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

  • 《Objective-C高級編程》這本書就講了三個東西:自動引用計(jì)數(shù)、block、GCD,偏向于從原理上對這些內(nèi)容...
    WeiHing閱讀 10,098評論 10 69
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,618評論 30 472
  • 2.1 Blcoks概要 2.1.1 什么是Blocks Blocks是C語言的擴(kuò)充功能——“帶有自動變量(即局部...
    SkyMing一C閱讀 2,449評論 6 18
  • Block基礎(chǔ)回顧 1.什么是Block? 帶有局部變量的匿名函數(shù)(名字不重要,知道怎么用就行),差不多就與C語言...
    Bugfix閱讀 6,906評論 5 61
  • 前言 Blocks是C語言的擴(kuò)充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了這...
    小人不才閱讀 3,869評論 0 23

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