代码块(block)之函数体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码块(block)之函数体相关的知识,希望对你有一定的参考价值。

 

代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。

 

 //block作为函数的参数
//函数返回值类型 函数名(block的声明格式)
void fun(int (^block)(int a,int b)){
    int  sum=block(5,6);
    NSLog(@"%d",sum);
}
void fun1(NSString *(^myBlock)(NSString *s),NSString *s1){
   
    NSLog(@"%@",myBlock(s1));
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
     
        //当一个block作为函数的参数是,其返回值类型、形参个数及类型要与函数形参格式保持一致

        int (^myBlock)(int a,int b)=^(int a,int b){
            NSLog(@"%d,%d",a,b);
            return  a*b;
        };
        //函数形参是block,调用时,直接传block的名字就行
        fun(myBlock);
        //调用的另一种方式:内联
        //内联block格式:^返回值类型 (形参列表){}

        fun(^int(int a, int b) {
            return  a-b;
        });

    fun1(^NSString *(NSString *s) {
                    return s;
                }, @"123");
        
        
    }
    return 0;
}

 

以上是关于代码块(block)之函数体的主要内容,如果未能解决你的问题,请参考以下文章

关注block

IOS Block代码块的定义与使用

关于Block的理解

ios block和delegate的区别

iOS学习之代码块(Block)

从运行时看Block——披着函数外衣的结构体