看一段代码:
#import <Foundation/Foundation.h>
int main()
{
//不带参数的,不带返回值的block变量
// 返回值 变量名 参数 变量值 所以这里的分号不能省略,对比int a = 19;
void (^myblock) () = ^{NSLog(@"block练习");};
//带参数和返回值的block
int (^sumblock)(int,int) = ^(int a,int b){
return a+b;
};
//调用
myblock();
sumblock(10,12);
return 0;
}
简单说明:
1.block是一种数据类型,相当于int,block的标志是^
2.block内部可以访问外面的变量,这也是它与函数的区别,但是默认情况下时不能修改外面的变量的,除非在定义变量时加上__block(两个下划线)
3.利用typedef定义block类型
typedef int (^Myblock)(int,int);
Myblock sumblock = ^(int a,int b){
return a+b;
};
4.block和函数类似
* 可以保存代码
* 可以有返回值
* 可以有形参
* 调用方式类似 |
|