什么是Block

BLOCK是什么?

蘋果推薦的類型,效率高,在運(yùn)行中保存代碼。用來封裝和保存代碼,有點(diǎn)像函數(shù),BLOCK可以在任何時(shí)候執(zhí)行。

  • BOLCK和函數(shù)的相似性:

  • 可以保存代碼

  • 有返回值

  • 有形參

  • 調(diào)用方式一樣。

  • block類型:void(^)()

  • Block存儲(chǔ)

Block默認(rèn)存儲(chǔ)在棧中,訪問了外界的對(duì)象,不會(huì)對(duì)對(duì)象retain;如果對(duì)block進(jìn)行一次copy,block就會(huì)存儲(chǔ)在堆中,訪問了外界的對(duì)象,會(huì)對(duì)對(duì)象進(jìn)行retain操作。

Block的定義
  • 注意:
  • 如果block中沒有使用外部變量,默認(rèn)就是全局
  • 如果block中使用了外部變量,就是堆
  • Block可以訪問局部變量,但是不能修改。
  • ARC中,默認(rèn)局部變量是強(qiáng)引用

Block的格式

Snip20160107_17.png

Block定義在函數(shù)或方法內(nèi)

int (^MyDear)(int, int) = ^(int a, int
b) {
return a+b;
};
```
定義了一個(gè)叫MyDear的blocks對(duì)象,它帶有兩個(gè)int參數(shù),返回int。等式右邊就是blocks的具體實(shí)現(xiàn)。

######block循環(huán)引用問題

- block盡量少使用self
- block盡量少使用下劃線(_)直接訪問成員屬性
- 要避免強(qiáng)引用到self的話,用__weak把self重新引用一下就行
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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