博客> 如何在 block 中修改外部变量
如何在 block 中修改外部变量
2018-11-13 04:59 评论:0 阅读:493 IT喃

block 是为了支持并行编程,对于普通的 local 变量,我们就不能在 block 里边修改,因为 block 可以被多个线程并行运行,会有问题的,如果在 block 中修改普通变量,编译的时候也会报错。

有两种方法:

· 可以修改static全局变量; · 可以修改用关键字 __block 修饰变量;

    __block int blockNum = 100;
    static int staticNum = 100;
    void (^aBlock)(void) = ^(void) {
        NSLog(@">> Num: %d and %d\n",blockNum, staticNum);
        blockNum++;
        staticNum++;
    };

    aBlock();
    NSLog(@">> ALL: %d and %d\n",blockNum, staticNum);

// 打印结果如下
2017-11-30 17:14:43.760052+0800 test[3189:527677] >> Num: 100 and 100
2017-11-30 17:14:50.510695+0800 test[3189:527677] >> ALL: 101 and 101
收藏
0
sina weixin mail 回到顶部