博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Block的定义,以及使用
阅读量:6672 次
发布时间:2019-06-25

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

Block的演变过程

1.定义一个函数,无参数,无返回类型

void test(){    NSLog(@"这是一个普通C函数");}

2.定义一个无参数,无返回类型的Block时使用 用尖号"^"表示它是一个Block,

如void (^myBlock)(),myBlock是Block的名字,后面()代表它没有参数,不可省略.

将上面test函数的函数体前加一个^号就是一个完整的代码块,不要忘记函数体后要加";"号

^{NSLog(@"这是一个普通C函数");};

 

//函数调用         test();        //定义一个Block        void (^myBlock)() = ^{            NSLog(@"这是一个无参,无返回类型的Block");        };        //调用Block        myBlock();

 

定义一个有参数,有返回值的Block

1.还是按照一个有参数有返回类型的函数推理,即:

int sum(int a ,int b){    return a + b;}

2.定义:

1>确定Block的返回值类型

2>定义一个有意义的名字

3>有几个参数,参数的类型是什么

4>在代码块中编写要执行怎样的操作,

5>调用这个Block

//有参有反的Block int (^sumBlock1)(int a ,int b) = ^(int a ,int b){            return a + b;        };//传递参数,并定义变量接收结果int sum = sumBlock1(1,2);NSLog(@"sum = %i",sum);

 

Block在某个类中作为参数传递

1.Block既然是一种数据类型,不可以直接传递.首先使用typedef定义,它的block名calculateBlock,并将它作为参数

#import 
typedef int (^calculateBlock)(int a,int b);@interface UseBlock : NSObject-(int)calculateNumber1:(int)num1 andNum2:(int)num2 andCalculate:(calculateBlock)calculate;@end

2.在.m文件中实现

@implementation UseBlock- (int)calculateNumber1:(int)num1 andNum2:(int)num2 andCalculate:(calculateBlock)calculate{    //这里自己理解为嵌套传递    return calculate(num1 , num2);}@end

3.如何使用

//定义两数之和的blockint (^sumBlock)(int a ,int b) = ^(int a ,int b){            return a + b;        };UseBlock *u = [[UseBlock alloc]init];//将定义好的block作为参数传递int result = [u calculateNumber1:10 andNum2:20 andCalculate:sumBlock];NSLog(@"%i",result);

 

转载于:https://www.cnblogs.com/shinechen/p/4094038.html

你可能感兴趣的文章
bash基本命令的使用(笔记)
查看>>
windows_learn 002 用户管理和组策略
查看>>
kafka性能优化
查看>>
含有echart 图表的报表打印
查看>>
域控迁移为08 R2后无法访问Linux服务器共享
查看>>
我的友情链接
查看>>
华为认证考试
查看>>
我的友情链接
查看>>
nosql之redis简单安装与使用
查看>>
基于LVS的NAT模式实现PHP应用
查看>>
在物质与精神之间实现平衡
查看>>
vim 文本编辑器
查看>>
使用angular做微信内html5开发时碰到的两个坑
查看>>
pvst+
查看>>
博为峰Java技术题 ——JavaEE Servlet 国际化Ⅰ
查看>>
linux学习笔记(一)
查看>>
【Spring Boot】13.整合druid
查看>>
Java并发和并行的区别
查看>>
extjs down 的用法
查看>>
layabox基础:hello world
查看>>