1.
声明:
void (^TestBlock) (int,int) = ^(int x,int y)
{
NSLog(@"%d",x*y);
};
调用:TestBlock(3,5);
2.直接使用
^(int x,int y){
NSLog(@"%d",x + y);
}(3,7);
3.返回值调用
int (^Test)(int,int)=^(int x,int y){
return x*y;
};
int l = Test(4,7);
NSLog(@"%d",l);
4.block中的变量是一个复制的值,例如
int x = 1;
void (^Test)(void)=^(void){
NSLog(@"%d",x);
};
Test();
x = 2;
Test();
输出为1 1,而不是1 2
如果在变量前加__block,则变量会与block为同一个作用域,block外修改变量也会随之修改,同理,block中也可以修改变量的值。
如果上例中int x=1;改为__block int x = 1; 则输出为1 2