1,塊是C,C++,Objective-C中的詞法閉包。
塊可以看作c里的函數(shù)指針,它將方法當(dāng)作對象那樣進(jìn)行傳遞。其實(shí)塊是一種代替函數(shù)指針的語法結(jié)構(gòu),原來使用函數(shù)指針時,需要用“不透明的void指針”來傳遞狀態(tài)。而改用塊之后,則可以把原來用標(biāo)準(zhǔn)c語言特性所編寫的代碼封裝成簡明且易用的接口。
2,塊可接收參數(shù),也可返回值。
3,塊可以分配在?;蚨焉?,也可以是全局的。分配在棧上的塊可拷貝到堆里,這一的話,就和標(biāo)準(zhǔn)的Objective-C對象一樣,具備引用計(jì)數(shù)了。
定義塊的時候,其所占用的內(nèi)存區(qū)域是分配在棧中的。
當(dāng)使用copy下,就可以把塊從棧復(fù)制到堆了。
全局的塊相當(dāng)于單例,不會被系統(tǒng)回收。
如:void(block)()={
NSLog(@"block");
};