iOS开发关于block和局部变量和全局变量
block内部引用全局变量和局部变量一直都是一个坑
block与局部变量
- (void)aboutBlock1{
__block int index = 100;
int (^myBlock)(int addNum) = ^(int addNum){
index += addNum;
return index;
};
NSLog(@"在内部修改了局部变量值后 == %d",myBlock(50));
//打印结果 在内部修改了局部变量值后 == 150
NSLog(@"在内部修改了局部变量值后再打印 == %d",myBlock(50));
//打印结果 在内部修改了局部变量值后再打印 == 200
index = 50;
NSLog(@"在外部修改了局部变量值后 == %d",myBlock(50));
//打印结果 在外部修改了局部变量值后 == 100
}
用__block修饰了局部变量之后,在block内部和外部都可以对局部变量进行修改。
- (void)aboutBlock2{
int block2 = 20;
int (^myBlock2)(void) = ^(){
return block2;
};
NSLog(@"局部变量不用__block修饰外部不修改 == %d",myBlock2());
//打印结果 局部变量不用__block修饰外部不修改 == 20
block2 =