1、定义格式
void (^block)()=^{ //无参无返回值
NSLog(@“helloworld”);
}
int (^myBlock)(int ,int )=^(int x,int y){ //有参有返回值,此时myBlock为变量名
return x+y;
}
2、typedef用法
typedef int(^myBlock)(int ,int ); //此时myBlock为类型
myBlock b1,b2;
3、访问外部变量
当定义block的时候,会把外部变量以const(只读)的方式复制一份存放到block的所在内存中。
(1)不允许修改外部变量
int m=10;
void (^block)()=^{
m=100; //错误
NSLog(@“m=%d”,m);
}
(2)允许修改
__block int m=10;
void (^block)()=^{
m=100; //正确
NSLog(@“m=%d”,m);
}
NSLog(@“m=%d”,m); //此时m=100