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