-
【使用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(@“我是人。”);
};
也没有报错
-
相关阅读:
参数估计(点估计和区间估计)
Cyanine5-COOH,Cy5 COOH荧光染料146368-11-8星戈瑞
VAPS XT开发入门教程06:新建文件介绍
乐得瑞推出1拖2功率分配快充线方案,支持数据传输
212 - 218. MySQL索引的基本用法
【Vue项目复习笔记】详情页的展示
2678. 老人的数目
正点原子嵌入式linux驱动开发——Linux设备树
python之计算市场技术指标
27-spark各版本对比
-
原文地址:https://blog.csdn.net/madoca/article/details/126799905