Block - 局部变量和全局变量在Block中的使用

2018-01-16  本文已影响229人  lionsom_lin

一、局部变量和Block

ERROR
int number=100;  
void (^TestBlock)(int)=^(int x){  
number=number+x;  
};
  
// 调用
TestBlock(100);  
正确姿势
__block int number=100;  
void (^TestBlock)(int)=^(int x){  
    number=number+x;  
    NSLog(@"TMD 加了一个 __block 修饰下就好了:%d",number);  
};  

// 调用
TestBlock(100);  

二、全局变量与Block

int value=100;  
-(void)testMethod{  
    void (^TestBlock)(int)=^(int x){  
        value=value+100;  
        NSLog(@"看看是不是喽%d",value+x);  
    };  
    TestBlock(100);  
}  

三、static静态变量与Block

static int number=100;  
int (^TestBlock)(int)=^(int x){  
    return number+x;  
};  
NSLog(@"TMD 用static修饰 使用局部变量的结果:%d",TestBlock(100));  
number=50;      //change the value of number.  
NSLog(@"在外面改变number的值,再次调用block的结果:%d",TestBlock(100));  
// 运行结果
[995:51910] TMD用static修饰使用局部变量的结果:200
[995:51910] 在外面改变number的值,再次调用block的结果:150
static int number=100;  
void (^TestBlock)(int)=^(int x){  
    number=10000;//change the value of  static number without __block.  
    NSLog(@"在block块里面改变static局部变量number的值:%d",number+x);  
};  

// 调用
TestBlock(86); 
// 运行结果
[995:51910]在block块里面改变static局部变量number的值:10086
上一篇 下一篇

猜你喜欢

热点阅读