Block
> 封装了一端代码,可以在任何时候执行;
> block可以作为函数参数或者函数的返回值,其本身又可以带输入参数或者返回值
> 苹果官方建议多用block。在多线程,异步任务,集合遍历,集合排序,动画转场用的很多
函数是在编译时期就写好,但是block还可以保存在运行时产生的一段代码
1、无参无返回值:
void (^myBlock) = ^{
NSLog(@"单身汪 单身汪 单身汪 ");
};
myBlock();
2、有参有返回值
int (^sumBlock)(int,int) = ^(int a,int b){
return a + b;
};
int sum = sumBlock(10,11);
3、typeof 定义block变量类型
typeof int (^MyBlock)(int,int);
Myblock b = ^(int a,int b){
return a + b;
};
4、block访问外部变量
> block内部可以访问外部变量
> 默认block内部不能修改外面的局部变量
> 给局部变量加上_block关键字,就可以在block内部修改;