// 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;
}