嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比

摘要:
C的回调函数:callback H1)。声明doSomeThingCount函数,参数是一个函数。voicecustomDSTCount{printf;}2) 在main函数中,运行callBack h的DSTCount函数。参数是main中的customDSTCount函数。而{DSTCount;}OC块:MyButton h:1)定义块的参数数量和类型。类型定义;2) ,使用Block参数-DSTCount:myButtonBlockPTR{staticintman=0;麻木++;myButtonBlockPTR;}声明doSomeThingCount函数RootViewControl。m: 1)viewDidLoad函数定义了一个红色按钮实例,向该按钮添加一个事件,并将该按钮添加到self-View-mybuttonClick:button{[buttonDSTCount:^{printf;};}图片补充:C回调函数:1)回调。C2)、回调。h3),主模块1。cOC)、MyButton。h2)、MyButton。m3)、RootViewControl。m4),运行

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
",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
",data_i32);
    }];
}

图片补充:

C回调函数:

1)、CallBack.C

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比第1张

2)、CallBack.h

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比第2张

3)、main.c

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比第3张

OC的Block

1)、MyButton.h

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比第4张

2)、MyButton.m

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比第5张

3)、RootViewControl.m

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比第6张

4)、运行

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比第7张

免责声明:文章转载自《嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Dev控件使用学习安装配置Greenplum下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用AJAX技术发送异步请求,HTTP服务端推送 --

使用AJAX技术发送异步请求 什么是AJAX AJAX指一步Javascript和XML(Asynchronous JavaScript And XML),它是一些列技术的组合,简单来说AJAX基于XMLHttpRequest让我们在不重载页面的情况下和服务器进行数据交换。 加上JavaScript和DOM(Document Object Model,文档...

PhantomJS 基础及示例 (转)

概述 PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.(ht...

jQuery基础【1】

jQuery 是一个“写的更少,但做的更多”的轻量级 JavaScript 库。jQuery 极大地简化了 JavaScript 编程。jQuery 很容易学习。jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数。jQuery 是一个 JavaScript 函数库。jQuery 库包含以下特性:   •HTML 元...

回调函数在小程序中的实际应用

需求分析 1.小程序主页/index/index.js初加载时需要从服务器请求数据 2.请求功能封装在utils/util.js里面,在主页的onLoad里面调用 问题 1.由于在util.js中的请求是异步方式,返回时间不确定,导致onLoad的时候取不到值 // miniprogram/pages/index/index.js import {getD...

Python-GIL 进程池 线程池

5、GIL vs 互斥锁(*****) 1、什么是GIL(Global Interpreter Lock) GIL是全局解释器锁,是加到解释器身上的,保护的就是解释器级别的数据 (比如垃圾回收的数据) 同一个进程内的所有线程都需要先抢到GIL锁,才能执行解释器代码 2 为什...

一次读懂 Select、Poll、Epoll IO复用技术

我们之前采用的多进程方式实现的服务器端,一次创建多个工作子进程来给客户端提供服务。其实这种方式是存在问题的。 可以打个比方:如果我们先前创建的几个进程承载不了目前快速发展的业务的话,是不是还得增加进程数?我们都知道系统创建进程是需要消耗大量资源的,所以这样就会导致系统资源不足的情况。 那么有没有一种方式可以让一个进程同时为多个客户端端提供服务? 接下来要讲...