1、什么是block
block是帶有局部變量的匿名函數(shù)
2、截獲自動(dòng)變量
block會截獲自動(dòng)變量的瞬間值
__block修飾符 如果被截獲的變量想要在block執(zhí)行時(shí)被賦值,必須使用__block修飾
3、block的實(shí)現(xiàn)
block的語法看上去很特別,但實(shí)際上block是作為極普通的c語言源代碼來處理的。 block即為oc對象
block截獲自動(dòng)變量時(shí)在block結(jié)構(gòu)體中保存一份自動(dòng)變量的【值】 __block修飾的變量也以結(jié)構(gòu)體形式存在
block結(jié)構(gòu)體 和 __block變量 結(jié)構(gòu)體都是在棧上創(chuàng)建的,當(dāng)棧被銷毀是,相應(yīng)的結(jié)構(gòu)體被拷貝到堆上。
4、block的循環(huán)引用
對象持有block,block反過來又持有對象時(shí),就造成了循環(huán)引用。 解決方案:block持有對象的弱引用
新聞熱點(diǎn)
疑難解答