Block

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);
    }];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值