• 【使用typedef将复杂的block定义简化 Objective-C语言】


    一、例如,要声明1个无参数、无返回值的block变量,怎么声明,这样声明:

    void (^myBlock1)();

    如果还要再声明1个无参数、无返回值的block变量呢,是不是要再写一下:

    void (^myBlock2)();

    如果要声明1个返回值是int类型的,有两个整型参数的block变量,怎么声明,这么声明:

    int (^myBlock3)(int num1,int num2);

    1.问题:定义block变量的时候,要写好大1串啊!类型好长

    2.typedef:给1个数据类型起别名

    typedef的使用场景:

    现在要声明1个

    unsigned long long int类型的变量

    unsigned long long int num1 = 10;

    这是个类型吧,现在我又要声明1个这个类型的变量呢

    是不是又要写1遍unsigned long long int啊,这个类型好长1串啊

    能不能把它变短一些啊,可以,用什么,用typedef

    所以,typedef的使用场景:将1个长类型,定义为1个短类型

    typedef unsigned long long int test;

    test num1 = 10;

    test num2 = 20;

    3.我们也可以使用typedef将很长的block类型,定义为1个短类型

    typedef void (^NewType)();

    这句话代表什么意思呢,

    代表我重新定义了1个类型,叫做NewType

    这个NewType是什么类型的,是block类型的

    什么样的block:无参数、无返回值的block

    所以这个时候,如果说你想要声明1个无参数、无返回值的block变量

    就这么写:

    NewType block1;

    这个时候,blcok1就是1个block变量,什么样的block变量呢,无参数、无返回值的block变量

    二、语法:

    1.typedef 返回值类型 (^新类型)(参数列表);

    typedef void (^NewType)();

    代表重新定义了1个类型,叫做NewType;

    这是个什么类型呢,是1个block类型

    是1个什么样的block类型呢

    无参数、无返回值的block类型

    所以这个时候,如果要声明1个无参数、无返回值的block变量,可以这么写:

    NewType block;

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

    这个表示什么意思呢:

    我是不是重新定义了1个新类型叫NewType2啊

    NewType2是1个什么类型,block类型

    什么样的block类型

    返回值是int,有两个整型参数的block类型

    所以这个时候,如果想要声明1个block类型的变量,block类型的变量的要求是有两个整型的参数,1个整型的返回值,那就用NewType2声明就可以了

    NewType2 t1;

    所以这个时候,t1变量就是1个block变量,什么样的block,整型的返回值,两个整型的参数的block

    赋个值试一下

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

    int num3 = num1+num2;

    return num3;

    };

    没有报错

    刚才那个无返回值的block变量也赋个值,试一下:

    typedef void (^NewType)() ;

    NewType block;

    block = ^void(){

    NSLog(@“大家好。”);

    NSLog(@“我是人。”);

    };

    也没有报错

  • 相关阅读:
    Node.js环境搭建
    微信小程序相机相册授权后,需要重启客户端才能正常调用相机,无法调起窗口选择图片,无反应解决方案
    【设计模式】单例模式
    vscode remote server tunnel内网穿透转发tcp,速率10kb每秒
    站点服务ISiteService
    从一个非科班的角度唠唠我的编程技术学习成长之路,希望对你有帮助
    React-Hooks详解
    ArcObjects SDK开发 011 RasterLayer
    生产升级JDK 17 必读手册
    Oracle创建日志,检测对PROC的异常捕获
  • 原文地址:https://blog.csdn.net/madoca/article/details/126799905