代码块
前言
大多书本上的代码块讲解非常的累赘和复杂,其实代码块我们可以把它理解为C里面的函数,就是把一些代码封装起来,使它们可以模块化使用。
代码块(block)的声明与实现
代码块的作用
block 允许开发者在两个对象之间任意语句当作数据进行传递
block 使用了与一个函数相同的机制,可以像声明一个函数一样来声明block;可以像定义一个函数的方法一样来定义一个block,也可以讲block当做对象来调用
代码块的声明:
返回值类型(^代码块的名称)(参数列表);
代码块的实现:
代码块的名字 =^(参数列表)(代码块的行为主体)
//代码块的声明:
void(^aBlock)(NSString *x);
//代码块的实现:
aBlock = ^(NSString *x){
NSLog(@"x = %@",x);
};
//代码块的调用
aBlock(@"Rick");
double(^getArea)(double width, double height);
getArea = ^(double width, double height){
double area=width*height;
return area;
};
double area = getArea(5,10);
NSLog(@"area =%.2f",area);
在block中使用全局变量和局部变量
全局变量和局部变量的作用在于我们想要调用一个在某个方法或循环、函数里面的一个变量时,我们可以根据需要将它定义为全局或局部变量,使它可以在方法执行完毕后仍然可以被调用。
#import "ViewController.h"
@interface ViewController ()
@end
int global =100;
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//void(^myBlock)()
//myBlock =^(){};
//等价于
void(^myBlock)()=^(){
global++;
NSLog(@"global = %d",global);
};
myBlock();
//局部变量
__block int local =100;
void(^myBlock2)()=^(){
local++;
NSLog(@"local = %d",local);
};
myBlock2();
}
@end