码迷,mamicode.com
首页 > 其他好文 > 详细

OC10-Block

时间:2015-07-28 21:10:11      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:oc

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);
    }];

版权声明:本文为博主原创文章,转载请注明原文地址

OC10-Block

标签:oc

原文地址:http://blog.csdn.net/u011752406/article/details/47110535

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!