嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比
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)、运行

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比的更多相关文章
- magento controller直接渲染Block 以及传参
class Jago_Deal_IndexController extends Mage_Core_Controller_Front_Action { public function ajaxActi ...
- js addEventListener调用传参函数
先看这段代码 function abc(key){ console.log(key); } for(let i=0;i<oInput.length;i++){ oInput[i].addEven ...
- Python学习教程(learning Python)--2.3.1 Python传参函数设计
本节主要讨论设计传递多个参数子函数的设计方法. 在2.3节里我们讨论了如何自己设计一个带参数的子函数的设计方法,现在我们研究一下如何传递两个及以上参数的设计方法. 函数为何要带参数呢?其实原因很简单, ...
- Python学习教程(learning Python)--2.3 Python自定义函数传参函数设计
Python里自定义子函数时,可以在调用时携带一些参数到子函数里去处理.具体用法结构如下: def func(arguments): statement statement etc. 定义子函数一定要 ...
- js中给函数传参函数时,函数加括号与不加括号的区别
<!doctype html><html><head><script> function show() { alert("123") ...
- Python学习入门基础教程(learning Python)--2.3.1 Python传参函数设计
本节主要讨论设计传递多个参数子函数的设计方法. 在2.3节里我们讨论了如何自己设计一个带参数的子函数的设计方法,现在我们研究一下如何传递两个及以上参数的设计方法. 函数为何要带参数呢?其实原因很简单, ...
- PHP_零基础学php_3PHP函数、传参函数、默认参数、函数返回值
<?php function say_hello() //无参数 { $name="tang"; echo "hello,".$name; echo &q ...
- JavaScript去除空格的三种方法(正则/传参函数/trim)
方法一: 个人认为最好的方法.采用的是正则表达式,这是最核心的原理. 其次.这个方法使用了JavaScript 的prototype 属性 其实你不使用这个属性一样可以用函数实现.但这样做后用起来比较 ...
- python 基础 4.0 函数的一般形式及传参
#/usr/bin/python #coding=utf-8 #@Time :2017/10/23 15:58 #@Auther :liuzhenchuan #@File :函数的一般形式.p ...
随机推荐
- TODO:即将开发的第一个小程序
TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...
- SuperMap iClient for JavaScript 新手入门
地理信息系统(英语:Geographic Information System,缩写:GIS)是一门综合性学科,结合地理学与地图学,已经广泛的应用在不同的领域,是用于输入.存储.查询.分析和显示地理数 ...
- html5的web存储
在html5标准之前,web存储信息需要cookie来完成,但是cookie不适合大量数据存储.因为需要等待服务器响应,所以速度慢/效率低. 本地存储的特点: localstorage是仅存储在用户的 ...
- spring remoting源码分析--Hessian分析
1. Caucho 1.1 概况 spring-remoting代码的情况如下: 本节近分析caucho模块. 1.2 分类 其中以hession为例,Hessian远程服务调用过程: Hessian ...
- 基于window7+caffe实现图像艺术风格转换style-transfer
这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...
- C# BackgroundWorker 详解
在C#程序中,经常会有一些耗时较长的CPU密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题.解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完 ...
- Activity之概览屏幕(Overview Screen)
概览屏幕 概览屏幕(也称为最新动态屏幕.最近任务列表或最近使用的应用)是一个系统级别 UI,其中列出了最近访问过的 Activity 和任务. 用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除 ...
- transient关键字的用法
本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...
- Python3中的字符串函数学习总结
这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...
- Mono+Jexus部署C# MVC的各种坑
如果你看到这篇文章,先别急着动手,过完一遍,确定是你要的再动手. 别人提到的这里不赘述,只说查了好久才知道的. 1号坑:System.IO.FileNotFoundException Could no ...