我已经讲过了怎么声明block了.比如用typedef
typedef int (^myBlock)(int);
调用
myBlock block = ^(int a){
return 20;
};
block(10);
下面开始讲一些其他的用法
- 1.block作为参数使用
- 1.首先声明一个block
typedef void (^myBlock)(int , int);
- 2.block作为方法的参数
-(void)text:(myBlock)myBlock {
myBlock(2 , 3);
}
- 3.调用方法
[self text:^(int a,int b) {
NSLog(@"----%d" , a + b);
}];
- 2.你如果在外界定义了一个变量,想在block里面使用,比如修改等之类的操作,那么需要用一个关键字来修饰,那个关键字是__block.如果不加__block关键字,那么,那个变量就只能读取,不能修改
__block int sum;
[self text:^int(int a,int b) {
sum = a + b;
NSLog(@"%d" , sum);
return sum;
}];