Objective-c - block作为函数的参数

/*


Objective-c - block作为函数的参数

 

    1> block做为一种数据类型,可以做为方法或者函数的参数.

 

    2> block做为函数的参数,如同其他数据类型一样,直接将block变量写在函数或者方法的小括弧中即可.

        

        1:

            void test(void(^firstBlock)());

            无返回值无参数的block变量做为无返回值的函数的参数.

 

            等价于:

            typedef void(^NewType)();

            NewType b1;

            void test(b1);

 

    3> block参数的函数的调用

 

        调用参数是block的函数,需要传入与参数block类型相同的block变量,或者直接传递符合要求的代码.

 

        1:(传入与参数block类型相同的block变量)

        //block变量的声明和初始化

        typedef void(^NewType)();

        NewType b1 = ^void(){

         NSLog(@"大家好!");

        };

 

        //函数的声明和实现

        void test(b1);

        void test(b1)

        {

            b1();

        }

        //调用

        test(b1);

 

        2:(直接传递符合要求的代码.)

        //函数的声明

        void test(void(^firstBlock)());

        //函数的实现

        void test()

        {

         

        }

 

        //调用

        test( ^void(){

            NSLog(@"大家好!");

         };

            );

 

    4> block作为函数的参数的运用

        

        基本数据类型做为函数的参数,可以将调用者的数据传递到函数的内部去使用.

    

        block做为函数的参数,可以将调用者的一段代码传递到函数的内部去执行.

 

        一个函数代表一个相对独立的功能,当函数的执行需要一段代码才可以继续执行的时候,调用者可以将需要的代码做为函数的参数传递到函数内部去执行.

 

 

如下代码:

 


 */

#import <Foundation/Foundation.h>


//无参数无返回值的block!

typedef void(^NewType)();


//有返回值有参数的block

typedef int(^NewType2)(int num1, int num2);


//函数test1的声明

void test1(NewType b1);


//函数test2的声明

void test2(NewType2 b2);


int main(int argc, const char * argv[]) {

    

    NewType b1 = ^void(){

        

        NSLog(@"大家好,我是无参数无返回值的block!");

    };

    //调用函数

    test1(b1);

    

    NewType2 b2 = ^int(int num1, int num2){

    

    return num1 + num2;

};

    //调用函数

    test2(b2);

   

    return 0;

}


//函数test1的实现

void test1(NewType b1)

{

    b1();

}


//函数test2的实现

void test2(NewType2 b2)

{

    NSLog(@"10 + 20 = %d", b2(10, 20));

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值