美文网首页
如何在 block 中修改外部变量

如何在 block 中修改外部变量

作者: 管乐_VICTOR | 来源:发表于2017-11-30 16:50 被阅读24次

    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
    

    相关文章

      网友评论

          本文标题:如何在 block 中修改外部变量

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