美文网首页
如何在 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

相关文章

  • iOS面试题(31.Block的循环引用、内部修改外部变量、三种

    block强引用self,self强引用block内部修改外部变量:block不允许修改外部变量的值,这里的外部变...

  • 如何在 block 中修改外部变量

    block 是为了支持并行编程,对于普通的 local 变量,我们就不能在 block 里边修改,因为 block...

  • Block 之 __block的使用

    前言:如何在block内修改外部变量的值 在前面,我们有学习到过block捕获局部变量,不捕获全局变量。那下面我们...

  • 有关iOS面试问题总结

    1、block可以修改外部变量吗? 在block内如何修改block外部变量引发的思考:为什么直接就可以修改全局变...

  • iOS中 __block关键字的实现原理

    在block内如何修改block外部变量? 1.默认情况下,在block中访问的外部变量是复制过去的,即:.我们可...

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

    block代码块中若想改变外部变量的值需要在外部变量钱面加__block. 需注意如果只是在块内修改了变量,外部没...

  • block

    block block内部访问外部的变量 如果外部的变量是基本数据类型,在block内部不可以直接修改外部变量的值...

  • Block原理

    为什么不允许block修改外部变量 Block不允许修改外部变量的值Apple这样设计,应该是考虑到了block的...

  • __block关键字

    前提:Objective-C规定,在block中不能修改外部变量的值,若想修改则需在变量前边加__block关键字...

  • __block关键字

    前提:Objective-C规定,在block中不能修改外部变量的值,若想修改则需在变量前边加__block关键字...

网友评论

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

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