三種類型的 block:
1、NSGlobalBlock:存儲在程序的數(shù)據(jù)區(qū)域逃顶,在 block 內(nèi)部沒有引用任何外部變量讨便。
2、NSStackBlock:存儲在棧上以政,在 block 內(nèi)部引用外部變量霸褒。在 MRC 下,棧塊在當(dāng)函數(shù)退出的時候盈蛮,該空間會被回收废菱,因此如果再調(diào)用該 block 會導(dǎo)致 crash,通過拷貝該棧塊,可以解決該問題殊轴。在 ARC 模式下衰倦,生成的 block 也是 棧塊,只是當(dāng)賦值給 strong 對象時旁理,系統(tǒng)會主動對其進(jìn)行 copy樊零。
3、NSMallocBlock:存儲在堆上的 block孽文。