OC--block

来源:互联网 发布:虚拟桌面软件 编辑:程序博客网 时间:2024/04/29 04:06

block的四种形式

//1.无参数,无返回值    void(^block)() = ^(){    //函数大括号里的代码段        NSLog(@"房子真贵!");        };    //block的使用    block();    //block自己不会执行,必须调用才会执行block大括号里的代码段
//2.有参数,无返回值    void(^block)( int , int ) = ^(int a ,int b){            int max = a > b ? a : b ;            NSLog(@"%@",max);    };    //调用    block(10 ,20 );    //void (^)(int ,int )是block的类型,他的名是block,我们也通过名进行调用    void(^block)(NSString *) = ^(NSString *str){            NSLog(@"%@",str);            };            block(@"你好,今天");    //当参数是一个数组,对数组进行遍历        void(^block)(NSArray *) = ^(NSArray *arr){                for (NSString *str in arr){                    NSLog(@"%@",str);                    }                };                block(@[@"1",@"2",@"3"]);
//3.有返回值,无参数    //有返回值在函数段的最后要加上return        int (^block)() = ^(){            return 100;            };            //block调用的时候没有参数也要写上括号        NSLog(@"%d",block());
//4,有参数,有返回值        NSString *(^block)(NSArray *,NSInteger) = ^(NSArray *arr,NSInteger index){                return arr[index];            };            NSLog(@"%@",block(@[@"1",@"2",@"3",],2));        NSInteger ^(block)(NSString *) = ^(NSString * str){                return str.integerValue;            };            NSLog(@"%ld",block(@"1234p123"));//只能打出1234
//参数日期的字符串,返回NSDate类型的日期对象        NSDate *(^block)(NSString *) = ^(NSString *date){                NSDateFormatter * formatter = [[NSDateFormatter alloc]init];                [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];                return [formatter dateFromString:date];                };        NSLog(@"%@",block(@"2015-07-28 12:12:12"));//block的函数段中更多使用参数,而返回值更多是调用一方使用
0 0