说到变量,在OC中分为以下几种变量。block在捕获不同类型变量时内部的逻辑并不相同。
__block int value = 20;
int value1 = 10;
int (^getBlock)(int num) = ^(int num) {
//100 + 30 + 10
return num + value + value1;
};
value = 30;
value1 = 40;
NSLog(@"getBlock-%d",getBlock(100));
输入结果是 140, 这里会发现几个问题:
从block设计结构上理解。block是一个匿名的闭包函数。在2个函数方法中,在block的函数方法中,一定是不能直接获取到外部函数的值。