3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
Block是一種比較特殊的數(shù)據(jù)類型。它可以保存一段代碼,在合適的時(shí)候取出來(lái)調(diào)用。
Block的修飾
ARC情況下:
1、如果用copy修飾Block,該Block就會(huì)存儲(chǔ)在堆空間。則會(huì)對(duì)Block的內(nèi)部對(duì)象進(jìn)行強(qiáng)引用,導(dǎo)致循環(huán)引用。內(nèi)存無(wú)法釋放。解決方法:新建一個(gè)指針(__weak typeof(Target) weakTarget = Target )指向Block代碼塊里的對(duì)象,然后用weakTarget進(jìn)行操作。就可以解決循環(huán)引用問題。
2、如果用weak修飾Block,該Block就會(huì)存放在??臻g。不會(huì)出現(xiàn)循環(huán)引用問題。MRC情況下用copy修飾后,如果要在Block內(nèi)部使用對(duì)象,則需要進(jìn)行(__block typeof(Target) blockTarget = Target )處理。在Block里面用blockTarget進(jìn)行操作。
返回值類型(^block變量名)(形參列表) = ^(形參列表) {};調(diào)用Block保存的代碼block變量名(實(shí)參);默認(rèn)情況下,,Block內(nèi)部不能修改外面的局部變量Block內(nèi)部可以修改使用__block修飾的局部變量。
Block的模式
1、無(wú)參數(shù)無(wú)返回值的Block
2、有參數(shù)無(wú)返回值的Block
3、有參數(shù)有返回值的Block
- 3 回答
- 0 關(guān)注
- 862 瀏覽
添加回答
舉報(bào)