Block
来源:互联网 发布:网站源码小偷程序 编辑:程序博客网 时间:2024/06/04 01:00
Block
Block类型
无参数无返回值
block自己不会执行,必须调用才会执行block大括号里的代码段
void (^block)() = ^(){ NSLog(@"无参数"); }; block();
结果
2015-07-28 20:06:56.839 OC10_Block[3182:202852] 无参数
无参数有返回值
有返回值在最后段要加上return
int (^block)() = ^(){ return 100; };// 没有参数也要加上括号 NSLog(@"%d",block());
结果:
2015-07-28 20:08:18.328 OC10_Block[3214:203801] 100
有参数无返回值
void (^)(int ,int )是block的类型,它的名是block,我们也通过名进行调用
void (^block1)(int ,int ) = ^(int a,int b){ NSLog(@"%d",a + b); }; // 调用 block1(10,20);
结果:
2015-07-28 20:10:12.211 OC10_Block[3251:205047] 30
有参数有返回值
int (^block)(int,int) = ^(int a,int b){ return a + b; }; NSLog(@"%d",block(10,20));
结果:
2015-07-28 20:11:17.154 OC10_Block[3274:205787] 30
block与局部变量
// block和局部变量 // __block相当于一个在block中修改的权限,否则它只能取值,不能赋值 __block int a = 10; void (^block)() = ^(){ a = 10 * a; NSLog(@"%d",a); }; block();
小练习
参数:日期的字符串,返回:NSDate类型的日期对象
NSDate *(^block)(NSString *) = ^(NSString *str){ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; return [formatter dateFromString:str]; }; NSLog(@"%@",block(@"2015-07-28 12:12:12"));
通过block对数组进行遍历
NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil]; // 系统的block [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%@",obj); }];
0 0
- Block
- block
- Block
- block
- block
- block
- block
- block
- block
- Block
- block
- Block
- Block
- Block
- Block
- block
- Block
- block
- Hadoop集群搭建
- android 把文件传到/system/framework目录下
- OC协议创建的步骤以及设置新代理人的步骤
- POJ 3258Cross The Rive
- java基础之方法的多态
- Block
- HDU 2546 饭卡
- DirectFB常用接口
- 线段树_FZU_1921
- Java对象序列化和反序列化
- ASCⅡ码转换
- HDOJ 1896 Stones(优先队列)
- zoj3886.Nico Number
- 15/7/28/class类和Field类的一般应用