【使用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(@“我是人。”);

};

也没有报错

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值