-
【使用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