什么是Block
block是將函數(shù)及其執(zhí)行上下文封裝起來(lái)的對(duì)象
關(guān)于Block截獲變量
int multiplier = 6;
int(^Block)(int) = ^int(int num ){
return num * multiplier ;
};
multiplier = 4;
NSLog("result is%d" ,Block(2) ) ;
來(lái)看這道經(jīng)典的block面試題,它的結(jié)果是12還是8?(答案為12)
static int multiplier = 6;
int(^Block)(int) = ^int(int num ){
return num * multiplier ;
};
multiplier = 4;
NSLog("result is%d" ,Block(2) ) ;
而這個(gè)答案為8。這是因?yàn)椋?/p>
- 對(duì)于
基本數(shù)據(jù)類型的局部變量截獲其值 - 對(duì)于
對(duì)象類型的局部變量連同所有權(quán)修飾符一起截獲 - 以
指針形式截獲靜態(tài)變量 -
不截獲全局變量和靜態(tài)全局變量