嵌入式&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 ...
随机推荐
- [APUE]UNIX进程的环境(下)
一.共享库 共享库使得可执行文件中不再需要包含常用的库函数,而只需在所有进程都可存取的存储区中保存这种库例程的一个副本.程序第一次执行的时候或第一次调用某个库函数的时候,用动态链接方法将程序与共享库函 ...
- 【流量劫持】躲避 HSTS 的 HTTPS 劫持
前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...
- JavaScript Array对象
介绍Js的Array 数组对象. 目录 1. 介绍:介绍 Array 数组对象的说明.定义方式以及属性. 2. 实例方法:介绍 Array 对象的实例方法:concat.every.filter.fo ...
- PHP以接口方式实现多重继承(完全模拟)--学习笔记
1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...
- 前端学HTTP之web攻击技术
前面的话 简单的HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象.应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用等资源才是攻击目标.本文将详细介绍攻击web站点 ...
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
今天我们要讲的是ng2的路由系统. 例子
- MySQL优化聊两句
原文地址:http://www.cnblogs.com/verrion/p/mysql_optimised.html MySQL优化聊两句 MySQL不多介绍,今天聊两句该如何优化以及从哪些方面入手, ...
- UVA-146 ID Codes
It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In order to exerc ...
- bzoj3932--可持久化线段树
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第 ...
- 你所能用到的BMP格式介绍
原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...