A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© keeganlee 中级黑马   /  2015-3-7 08:29  /  926 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一.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;
   }
}];

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马