Block-块代码
- 定义
①Block是OC中的一种数据类型,在iOS开发中被广发使用
②^是Block的特有标记
③Block的实现代码包含在{}之间
④大多数情况下,以内联inline函数的方式被定义和使用
⑤Block与C语言的函数指针有些相似,但使用起来更加灵活
- 示例
void(^LMLog)() = ^{
NSLog(@"it’s a block log");
};
int(^sum)(int,int) = ^(int x, int y){
return x + y;
};
- 格式说明
- (返回类型)(^块名称)(参数类型) = ^(参数列表){代码实现};
- 如果没有参数,等号后面参数列表的()可以省略
- Block可以使用在定义之前声明的局部变量
int i = 10;
void(^myBlock)() = ^{
NSLog(@"%d",i);
};
i = 100;
myBlock();
- 在定义Block时,会在Block中建立当前局部变量内容的拷贝
- 后续再对该变量的数值进行修改,不会影响到Block中的数值
- 如果需要在Block中保持局部变量的数值变化,需要使用__block关键字
- 使用__block关键字后,同样可以在Block中修改该变量的数值
所以此时打印100
- Block可以当作参数直接传递
NSArray *arr = @[@"AAAA",@"BBBB",@"CCCC",@"DDDD"];
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"第 %d 项内容是 %@",(int)idx,obj);
if ([@"CCCC" isEqualToString:obj]) {
*stop = YES;
}
}];
- 遍历并NSLog() arr中的内容,当obj为"CCCC"时停止遍历

浙公网安备 33010602011771号