黑马程序员技术交流社区
标题:
oc中的block
[打印本页]
作者:
keeganlee
时间:
2015-3-7 08:29
标题:
oc中的block
一.Block定义
1.1定义
(1)Block是OC中的一种数据类型,在iOS开发中被广泛使用
(2)^是Block的特有标记
(3)Block的实现代码包含在{}之间
(4)大多情况下,以内联inline函数的方式被定义和使用
(5)Block与C语言的函数指针有些相似,但使用起来更加灵活
1.2示例代码
void(^demoBlock)() =^ {
NSLog(@"demo");
};
int(^addBlock)(int, int) =^(int x, int y) {
return x +y;
};
说明: (1)(返回类型)(^块名称)(参数类型)=^(参数列表){代码实现}; (2)如果没有参数,等号后面参数列表的()可以省略
二.Block使用
2.1 Block被当做参数直接传递
NSArray *array= @[@"张三",@"李四",@"王五",@"赵六"];
[array enumerateObjectsUsingBlock:^(id obj, NSUIntegeridx, BOOL*stop) {
NSLog(@"第 %d 项内容是 %@",(int)idx, obj);
if ([@"王五"isEqualToString:obj]) {
*stop = YES;
}
}];
说明: 遍历并NSLog()array中的内容,当obj 为"王五"时停止遍历
2.2 对象传递进Block的方式
NSString *stopName =@"王五";
NSArray *array= @[@"张三",@"李四",@"王五",@"赵六"];
[array enumerateObjectsUsingBlock:^(idobj, NSUInteger idx,BOOL *stop) {
NSLog(@"第 %d 项内容是 %@",(int)idx, obj);
if ([stopName isEqualToString:obj] || idx == stopIndex) {
*stop = YES;
}
}];
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2