block与函数

很长一段时间没写博客了,这样不好,以前对block的理解不深,后来发现block和函数,其实时有异曲同工的作用, 下面来讲解一下,希望对读者有帮助

在程序中,我们如果有需要预留一段代码,在以后随时调用,可以用函数,也可以用block, 而函数,必须在方法外预先定义,比如main函数之前就定义, 例如:

int func( int a ,int b) { return a + b ; }

int main(){ int c = func(2,4); return 0; }

其中,必须要在main之前就把func定义好,而block不同,在main之内定义即可, 例如

int main(){ int (^block)(int a, int b) = ^(int a,int b){ return a +b; }; block(); return 0; }

此时你是否发现,其实block和函数的调用时一样的,只是,将函数名称换成了^block而已,又如: int (^kkk)() = ^{ return 3 + 55; }; 这其中kkk就相对与函数名 ,而{}相当于函数体,()中没有参数,所以^后的()可以省略。

当然,我们在使用block时,一般在头部分就typedef一下,如下所示:

typedef int MyInt;

typedef int (^MyBlock)(int, int);

void play() { NSLog(@"play mp3"); }

int main(int argc, const char * argv[]) { @autoreleasepool { void (^block)() = ^{ NSLog(@"fhdaskhjfhjdsf"); NSLog(@"fhdaskhjfhjdsf4324"); NSLog(@"fhdaskhjfhjdsf6546"); NSLog(@"fhdaskhjfhjdsf8768"); };

    MyBlock sumBlock =  ^(int a, int b){
        return  a + b;
    };
    
    MyBlock minusBlock =  ^(int a, int b){
        return  a - b;
    };
    
    int (^haha)(int x ,int y) = ^(int x ,int y)
    {
        return x + y;
    };
    int k = haha(3,4);
    
    int r = minusBlock(10, 2);
    
    NSLog(@"%d", r);
}
return 0;

}

转载于:https://my.oschina.net/panyong/blog/280887

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值