前言:

   block這個(gè)名詞對(duì)于做一般開(kāi)發(fā)者來(lái)說(shuō)可能會(huì)覺(jué)得稀奇古怪而非常陌生,但是對(duì)于iOS工程師來(lái)說(shuō),在整個(gè)開(kāi)發(fā)中到處都是它的影子,今天一大早覺(jué)得在假期學(xué)習(xí)一下它,對(duì)明年的iOS開(kāi)發(fā)工作做個(gè)準(zhǔn)備,突然有點(diǎn)找回當(dāng)年即將畢業(yè)時(shí)的最后一個(gè)春節(jié)假期的感覺(jué),今天基于最近使用的角度來(lái)學(xué)習(xí)總結(jié)一下block。

什么是Block?

   block是對(duì)象,它封裝了一段代碼,這段代碼可以在任何時(shí)候執(zhí)行。block可以作為函數(shù)參數(shù)或者函數(shù)的返回值,而其本身又可以帶輸入?yún)?shù)或返回值。它和傳統(tǒng)的函數(shù)指針很類似,但是有區(qū)別:block是inline的,并且它對(duì)局部變量是只讀的,^是block語(yǔ)法的標(biāo)識(shí)。

聲明block

 第一種方式:用typedef定義一個(gè)block類型

typedef void (^Sucess)(NSString*);//用typedef定義一個(gè)block類型@property (nonatomic,copy) Sucess myBlock;

第二種方式:也可以通過(guò)標(biāo)準(zhǔn)的block函數(shù)體

@property (nonatomic,copy) void(^myBlock)(NSString*);

完整的block: NSString* (^callBack) (NSString *)

第一個(gè)參數(shù):block返回值

第二個(gè)參數(shù):block名字

第三個(gè)參數(shù):block回調(diào)參數(shù)

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

 NSString* (^callBack) (NSString *) =^(NSString *string){
        NSMutableString *  tempString=[[NSMutableString all