Block对象是一个C级别的语法和运行机制。它与标准的C函数类似,不同之处在于,它除了有可执行代码以外,它还包含了与堆、栈内存绑定的变量。因此,Block对象包含着一组状态数据,这些数据在程序执行时用于对行为产生影响。
用^操作符来声明一个Block变量,并指明Block述句的开始。Block的主体部分包含在{}内.
1)block最简单形式
定义格式:void (^block名)() = ^{代码块;}
使用格式:block名();
//定义的时候,把block当成数据类型
void(^myBlock)() = ^ {
NSLog(@"hello");
};
// 执行时,把block当成函数
myBlock();
2) block带有参数的block的定义和使用
格式:void (^block名称)(参数列表)= ^ (参数列表) { // 代码实现; }
//定义有参数的block
void(^sumBlock)(int, int) = ^ (intx, inty) {
NSLog(@"%d", x + y);
};
//调用block
sumBlock(10, 20);
3)带有参数和返回值的block
格式:返回类型(^block名称)(参数列表)= ^ 返回类型(参数列表) { // 代码实现; }
//定义有返回值和参数的block
int(^sumBlock2)(int, int) = ^ int(inta, intb) {
returna + b;
};
//调用有返回值的block
NSLog(@"%d", sumBlock2(4, 8));
|
|