block:( 理解基础1)
1.
首先类似于c语言中的函数,可以有返回值类型,有参数,能接收,并且我们将其封装起来也可以使用。
例如:
这是一个block,以^ 开始的代码块
int (^blockOne)(int,int)= ^(int a,int b){
return a+b;
};
int:是返回值类型
(^blockOne):是一个block的名字
(int,int):只可以接收int型的数据
这是一个c语言函数
int a(int a ,int b){
int c;
c = a+b;
return c;
}
在调用时也比较相似,block调用:int add = blockOne(2,3);
c语言函数的调用a(2,3);结果是一样的。
以上是一个有返回值类型的
定义个无返回值类型的
void (^blockTwo)(void) = ^(void){
NSLog(@"hello");
};
调用:
blockTwo();
同样类似于如下c语言中的一个无返回值类型的函数
void b(){
NSLog(@"hello");
}
调用:
b();
2.
因为是void类型的因此void是可以省略的,如果想要修改block里面的变量,必须要加__block
__block int c = 10;
void(^blockThree)(void)=^{
c= c+2;
NSLog(@"%d",c);
};
blockThree();