现在的位置: 首页 > 综合 > 正文

block引用局部变量

2016年05月28日 ⁄ 综合 ⁄ 共 445字 ⁄ 字号 评论关闭

//  AppDelegate.m

- (int)test:(int (^)(int,
int))block

{

   
return block(10,20);

}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {

    

    __block
int m =
8;//代码块里修改局部变量需要__block,否则只可读(因为它是一个常量副本)

   
int (^b)(int,int);

    b = ^int(int x,
int y){

        m =
10;

        //NSLog(@"m value:%d",m);//如果去掉__block m的值为第一次m赋值,因为m就是常数20

       
return x * y;

    };

    m =
20;

    NSLog(@"test return:%d",[self
test:b]);

    NSLog(@"m value:%d",m);

    return
YES;

}

抱歉!评论已关闭.