相同: 函數(shù)指針和Block都可以實(shí)現(xiàn)回調(diào)的操作癣朗,聲明上也很相似鱼喉,實(shí)現(xiàn)上都可以看成是一個(gè)代碼片段。 函數(shù)指針類型和Block類型都可以作為變量和函數(shù)參數(shù)的類型锉试。(typedef定義別名之后守伸,這個(gè)別名就是一個(gè)類型)
不同: 函數(shù)指針只能指向預(yù)先定義好的函數(shù)代碼塊(可以是其他文件里面定義斤吐,通過函數(shù)參數(shù)動(dòng)態(tài)傳入的),函數(shù)地址是在編譯鏈接時(shí)就已經(jīng)確定好的黍图。 Block本質(zhì)是Objective-C對(duì)象曾雕,是NSObject的子類,可以接收消息助被。 函數(shù)里面只能訪問全局變量剖张,而Block代碼塊不光能訪問全局變量切诀,還擁有當(dāng)前棧內(nèi)存和堆內(nèi)存變量的可讀性(當(dāng)然通過__block訪問指示符修飾的局部變量還可以在block代碼塊里面進(jìn)行修改)。 從內(nèi)存的角度看搔弄,函數(shù)指針只不過是指向代碼區(qū)的一段可執(zhí)行代碼幅虑,而block實(shí)際上是程序運(yùn)行過程中在棧內(nèi)存動(dòng)態(tài)創(chuàng)建的對(duì)象,可以向其發(fā)送copy消息將block對(duì)象拷貝到堆內(nèi)存顾犹,以延長(zhǎng)其生命周期倒庵。
Block 和 函數(shù)指針的異同
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拘央,“玉大人涂屁,你說我怎么就攤上這事』椅埃” “怎么了拆又?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)栏账。 經(jīng)常有香客問我帖族,道長(zhǎng),這世上最難降的妖魔是什么挡爵? 我笑而不...
- 正文 為了忘掉前任竖般,我火速辦了婚禮,結(jié)果婚禮上茶鹃,老公的妹妹穿的比我還像新娘涣雕。我一直安慰自己,他們只是感情好闭翩,可當(dāng)我...
- 文/花漫 我一把揭開白布挣郭。 她就那樣靜靜地躺著,像睡著了一般疗韵。 火紅的嫁衣襯著肌膚如雪兑障。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼竞漾,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了窥翩?” 一聲冷哼從身側(cè)響起业岁,我...
- 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寇蚊,沒想到半個(gè)月后笔时,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡仗岸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年允耿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扒怖。...
- 正文 年R本政府宣布俯邓,位于F島的核電站骡楼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏稽鞭。R本人自食惡果不足惜鸟整,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朦蕴。 院中可真熱鬧篮条,春花似錦、人聲如沸梦重。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽琴拧。三九已至降瞳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挣饥。 一陣腳步聲響...
- 正文 我出身青樓汛聚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親短荐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倚舀,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 相似點(diǎn): 函數(shù)指針和Block都可以實(shí)現(xiàn)回調(diào)的操作痕貌,聲明上也很相似,實(shí)現(xiàn)上都可以看成是一個(gè)代碼片段糠排。 函數(shù)指針類型...
- 1.數(shù)組指針(也稱行指針) 定義 int (*p)[n]; ()優(yōu)先級(jí)高入宦,首先說明p是一個(gè)指針哺徊,指向一個(gè)整型的一維...
- 只有指針是可以運(yùn)算(移動(dòng))的谣膳,數(shù)組名是不可以的。 int x[10]; x++; //illegal int* ...