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