本質
是將函式及其執行上下文封裝起來的物件。
int multiplier = 6;
int(^Block)(int) = ^(int)(int num) {
// 函式呼叫是使用結構體對應的 multiplier,而不是方法宣告的 multiplier
return num * multiplier;
};
什麼是 Block
呼叫?
答:Block
呼叫即是函式的呼叫
截獲變數
// 基本資料型別的區域性變數,在定義時就以值的方式傳遞到 Block 對應的結構體中
int multiplier = 6;
int(^Block)(int) = ^(int)(int num) {
// 函式呼叫是使用結構體對應的 multiplier,而不是方法宣告的 multiplier
return num * multiplier;
};
multiplier = 4;
// result is 12
NSLog(@"result is %d", Blcok(2));
- 對於基本資料型別的區域性變數截獲其值
- 對於物件型別的區域性變數連同所有權修飾符一起截獲
- 以指標形式截獲靜態區域性變數
- 不截獲全域性變數、靜態全域性變數