代码块
block代码块,允许开发者在两个对象之间将任意语句当作数据进行传递block,使用了与一个函数相同的机制,可以像声明一个函数一样来声明一个block ,可以像定义一个函数的方法一样来定义一个block,也可以将block当作一个对象来调用。
代码块的声明:
返回值类型(^代码块名字)(参数列表)
代码块实现:
代码块名字=^(参数列表){代码块的行为主体};
//声明一个代码块
void(^aBlock)(NSString*x);
//实现代码块
aBlock=^(NSString *x){
NSLog(@"%@",x);
};
//代码块的调用
//直接调用(给参数赋值)
aBlock(@"12345");
//double 长X,宽y 求面积
double(^getArea)(double x,double y);
getArea=^(double x,double y){
double area=x*y;
return area;
};
double area=getArea(2,3);
NSLog(@"%.2f",area);
//在block中使用全局变量和局部变量
//使用全局变量,参数列表内不用加参,声明后直接实现block
void(^myBlock)()=^(){
global++;
NSLog(@"%d",global);
};
//调用
myBlock();
//定义一个局部变量,如果需要在代码块中修改一个局部变量的值,需要在局部变量的前面加上__block,如果不加这个修饰,会引起报错
__block double y=3.4;
void(^block)()=^(){
y++;
NSLog(@"%f",y);
};
block();
}