如果将此例题中的multiplier局部变量,修饰成static?
来源:7-3 __block修饰符相关面试问题

慕斯卡622825
2019-03-05
原题:
{
__block int mutliplier = 6;
int(^Block)(int) = ^int(int num) {
return num * mutliplier;
};
mutliplier = 4;
NSLog(@“result is %d”, Block(2));
}
修改为:
{
static int mutliplier = 6;
int(^Block)(int) = ^int(int num) {
return num * mutliplier;
};
mutliplier = 4;
NSLog(@“result is %d”, Block(2));
}
我在Xcode中,实际运行结果相同。
是否可以达到同样的效果,请老师帮忙解答一下?
写回答
2回答
-
JerseyCafe
2019-03-14
是正确的, 因为 Block 会截获 局部静态变量的指针 而非其值.
10 -
摩羯大灰狼
2019-03-05
static 静态局部变量 block 截获指针
__block 修饰后 变量变为 对象
012019-03-05
相似问题