1、什么是block
block是帶有局部變量的匿名函數(shù)
2、截獲自動變量
block會截獲自動變量的瞬間值
__block修飾符 如果被截獲的變量想要在block執(zhí)行時被賦值,必須使用__block修飾
3、block的實現(xiàn)
block的語法看上去很特別,但實際上block是作為極普通的c語言源代碼來處理的。 block即為oc對象
block截獲自動變量時在block結(jié)構(gòu)體中保存一份自動變量的【值】 __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反過來又持有對象時,就造成了循環(huán)引用。 解決方案:block持有對象的弱引用
新聞熱點
疑難解答