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
原创粉丝点击