博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比
阅读量:4661 次
发布时间:2019-06-09

本文共 1619 字,大约阅读时间需要 5 分钟。

C的回调函数:

callBack.h

1)、声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数。

void DSTCount(void(*CallBack)(int data_i32));

 

callBack.c

1)、在doSomeThingCount函数,对运行次数自增,并调用参数--函数。

void DSTCount(void(*CallBack)(int data_i32)){    static int numb = 0;    numb++;    (*CallBack)(numb);}

 

main.c

1)、定义一个customdoSomeThingCount函数,打印数据。

void customDSTCount(int data_i32){    printf("%d\n",data_i32);}

2)、main函数里,运行 callBack.h 的 DSTCount 函数,参数为main里的customDSTCount函数。

while (1){    DSTCount(customDSTCount);}

 

 

 

OC的Block:

MyButton.h(继承于UIButton):

1)、定义一个Block的参数数量、类型。

typedef void(^ButtonBlock)(int data_i32);

2)、声明一个doSomeThingCount函数,带Block参数。(注意,这里不需要加*,类用习惯了,参数随手就加个*)

-(void)DSTCount:(ButtonBlock)myButtonBlockPTR;

 

MyButton.m(继承于UIButton):

1)、在doSomeThingCount函数,对运行次数自增,并调用Block参数。

-(void)DSTCount:(ButtonBlock)myButtonBlockPTR{    static int numb = 0;    numb++;    myButtonBlockPTR(numb);}

 

RootViewControl.m(self.window.rootViewController):

1)、viewDidLoad函数,定义一个(100,100,100,100)、红色的按钮实例,按钮添加事件,把按钮加到self.view上。

MyButton *tempButton = [[MyButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];    tempButton.backgroundColor = [UIColor redColor];    [tempButton addTarget:self action:@selector(mybuttonClick:) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:tempButton];

2)、按钮点击调用,调用MyButton里的DSTCount函数,Block参数直接输入。

-(void)mybuttonClick:(MyButton*)button{    [button DSTCount:^(int data_i32) {        printf("%d\n",data_i32);    }];}

 

 

 

 

 

 

图片补充:

C回调函数:

1)、CallBack.C

2)、CallBack.h

3)、main.c

 

 

 

OC的Block

1)、MyButton.h

2)、MyButton.m

3)、RootViewControl.m

4)、运行

转载于:https://www.cnblogs.com/leonlincq/p/6227669.html

你可能感兴趣的文章
BZOJ2460 Beijing2011元素(线性基+贪心)
查看>>
_DataStructure_C_Impl:顺序栈
查看>>
数据库缓存
查看>>
java核心技术----Object类
查看>>
spring security
查看>>
nginx 支持pathinfo
查看>>
[总结]高斯消元&XOR方程
查看>>
bootstrap table 使用入门
查看>>
【Abode Air程序开发】在设备上进行安装
查看>>
【读书笔记】程序员的自我修养总结(四)
查看>>
【Qt开发】QThread中的互斥、读写锁、信号量、条件变量
查看>>
object-c 对象内存分配
查看>>
阿铭linux笔记
查看>>
Oracle表字段的增加、删除、修改和重命名
查看>>
基于Java的Socket编程技术
查看>>
SVG学习小结
查看>>
Oracle-数据库启动步骤
查看>>
人物角色群体攻击判定(三)Physics.OverlapSphere(群体攻击)
查看>>
《美人心计》评论
查看>>
简单的图形学(三)——光源
查看>>