• 【block作为函数的参数 Objective-C语言】


    一、block作为函数的参数

    1.block是1个数据类型,能不能作为函数的参数呢,可以

    2.例如,我有1个test函数,现在我要给它定义1个参数,定义1个block类型的参数,什么样的block呢,无参数、无返回值的block

    main.m文件中

    import

    //为这个函数定义1个参数,定义1个block类型的参数

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

    //如果要给它定义1个int类型的参数,就在小括号里面声明1个int类型的变量就可以了,例如void test(int num)

    //如果要定义1个float类型的参数,就在小括号里面声明1个float类型的变量就可以了,例如void test(float f1)

    //如果要定义1个block类型的参数,就在小括号里面声明1个block类型的变量就可以了,例如void test(void (^block1)())

    void test(void (^block1)())

    {

    NSLog(@“--------------------”);

    }

    int main()

    {

    return 0;

    }

    这个时候,我是不是就在test()这个函数的小括号里面,声明了1个无参数、无返回值的block变量了啊,那么这个时候,这个block1就是这个test()函数的参数

    这个参数block1是不是存储了代码啊,那么我就执行1下这个参数里的代码,如下:

    void test(void (^block1)())

    {

    NSLog(@“--------------------”);

    block1();

    NSLog(@“--------------------”);

    }

    int main()

    {

    return 0;

    }

    3.如何为函数定义1个block类型的参数

    1)在函数的小括弧里面,声明1个指定格式的block类型的变量就可以了

    2)如果看见上面这个写法有点晕:

    void test(void (^block1)()){

    NSLog(@“----------------”);

    block1();

    NSLog(@“----------------”);

    }

    那就通过typedef把它弄成短格式就可以了

  • 相关阅读:
    动态规划题目记录
    Springboot毕业设计毕设作品,汽车租赁管理系统设计与实现
    详解数仓对象设计中序列SEQUENCE原理与应用
    软考知识点---11关系型数据库SQL语言
    2022 ICPC 杭州站
    Ubuntu环境Docker+K8s+Dashboard的安装配置(无坑亲测)
    MATLAB中拟合线性方程(最小二乘法)
    mq具体使用方式
    springMVC下载文件
    vue2+element-ui实现一个注册表单
  • 原文地址:https://blog.csdn.net/madoca/article/details/126824067