美文网首页
block代码块中改变外部变量的值

block代码块中改变外部变量的值

作者: C调 | 来源:发表于2017-04-13 16:55 被阅读0次

    block代码块中若想改变外部变量的值需要在外部变量钱面加__block.

    需注意如果只是在块内修改了变量,外部没有调用这个block,此时在外部打印这个变量时还是其原来的值。

    - (void)block {

    __block int x  = 5;// 在变量前面加了__block

    int (^block2)(int) = ^(int y){

    x=6;//这里允许对该变量进项修改 此时 X 的值为6

    NSLog(@"%d",x);

    int z = x + y;

    return z;

    };

    block2(4);//如果不调用 block 下边打印的 X 的值还是5(调用此方法时 将这行代码注释掉,加上分别运行一次就看出来了)

    //block代码块中可以对__block修饰的变量修改,但是修改的值仅限于 block 代码块内部,因为在给block赋值的时候,已经对代码块里的变量做了值的拷贝

    NSLog(@"%d,%d",x,block2(4));

    }

    PS:不明白其中的内部原理,如果哪位大神看到的话望补充告知!!谢谢!!!

    相关文章

      网友评论

          本文标题:block代码块中改变外部变量的值

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