block 记录

2016-07-29  本文已影响11人  mqhong

2015年12月11日星期五


int num = 10;
void test5()
{
    void (^block)() = ^{
        // block内部能够一直引用全局变量
        NSLog(@"----num=%d", num);
    };
    
    num = 20;
    
    block();
}

void test4()
{
    static int age = 10;
    void (^block)() = ^{
        // block内部能够一直引用被static修饰的变量
        NSLog(@"----age=%d", age);
    };
    
    age = 20;
    
    block();
}

void test3()
{
    __block int age = 10;
    void (^block)() = ^{
        // block内部能够一直引用被__block修饰的变量
        
        NSLog(@"----age=%d", age);
    };
    
    age = 20;
    
    block();
}

void test2()
{
    int age = 10;
    void (^block)() = ^{
        // 普通的局部变量,block内部只会引用它初始的值(block定义那一刻),不能跟踪它的改变
        NSLog(@"----age=%d", age);
    };
    
    age = 20;
    
    block();
}

void test()
{
    int age = 10;
    void (^block)() = ^{
        // ----age=10
        NSLog(@"----age=%d", age);
    };
    block();
}

}
```

在VC1中导入VC2头文件,

```
VC2 *vc2 =[[VC2 alloc] init];

[vc2 setMmblock:^(NSString *text) {//在push到下个控制器(VC2)的时候调用vc2的block
    
    NSLog(@"这里传值过来了");
    [btn setTitle:text forState:UIControlStateNormal];
    
}];

[self.navigationController pushViewController:vc2 animated:YES];

```

如此便完成了block简单的替代delegate的方法,我觉得一定还有其他方法,学到了以后再来补充。

上一篇下一篇

猜你喜欢

热点阅读