美文网首页
Block - 局部变量和全局变量在Block中的使用

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

作者: lionsom_lin | 来源:发表于2018-01-16 16:36 被阅读229次

一、局部变量和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

相关文章

网友评论

      本文标题:Block - 局部变量和全局变量在Block中的使用

      本文链接:https://www.haomeiwen.com/subject/axzjoxtx.html