前言:
block這個名詞對于做一般開發(fā)者來說可能會覺得稀奇古怪而非常陌生,但是對于iOS工程師來說,在整個開發(fā)中到處都是它的影子,今天一大早覺得在假期學習一下它,對明年的iOS開發(fā)工作做個準備,突然有點找回當年即將畢業(yè)時的最后一個春節(jié)假期的感覺,今天基于最近使用的角度來學習總結(jié)一下block。
什么是Block?
block是對象,它封裝了一段代碼,這段代碼可以在任何時候執(zhí)行。block可以作為函數(shù)參數(shù)或者函數(shù)的返回值,而其本身又可以帶輸入?yún)?shù)或返回值。它和傳統(tǒng)的函數(shù)指針很類似,但是有區(qū)別:block是
inline
的,并且它對局部變量是只讀的,^是block語法的標識。
聲明block
第一種方式:用typedef定義一個block類型
typedef void (^Sucess)(NSString*);//用typedef定義一個block類型@property (nonatomic,copy) Sucess myBlock;
第二種方式:也可以通過標準的block函數(shù)體
@property (nonatomic,copy) void(^myBlock)(NSString*);
完整的block: NSString* (^callBack) (NSString *)
第一個參數(shù):block返回值
第二個參數(shù):block名字
第三個參數(shù):block回調(diào)參數(shù)
NSString* (^callBack) (NSString *) =^(NSString *string){ NSMutableString * tempString=[[NSMutableString all