美文网首页
Block变量传递

Block变量传递

作者: cjdale | 来源:发表于2018-07-03 22:23 被阅读0次

    1、局部变量

    NSInteger a = 1;//局部变量
    void(^block)(void) = ^{
        NSLog(@"a:%ld", a);
    };
    a = 2;
    block();
    

    打印结果为: 1

    此时block变量是值传递

    2、全局变量

    NSInteger b = 3;//全局变量
    
    void(^block1)(void) = ^{
        NSLog(@"b:%ld", b);
    };
    b = 4;
    block1();
    

    打印结果为: 4

    此时block变量是指针传递

    3、静态变量

    static NSInteger c = 5;
    void(^block2)(void) = ^{
        NSLog(@"c:%ld", c);
    };
    c = 6;
    block2();
    

    打印结果为: 6

    此时block变量是指针传递

    4、__block修饰变量

    __block NSInteger d = 7;
    void(^block3)(void) = ^{
        NSLog(@"d:%ld", d);
    };
    d = 8;
    block3();
    

    打印结果为: 8

    此时block变量是指针传递

    总结:

    • 如果是局部变量,Block是值传递

    • 如果是静态变量,全局变量,__block修饰的变量,block都是指针传递

    相关文章

      网友评论

          本文标题:Block变量传递

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