block小解
来源:互联网 发布:it桔子网 编辑:程序博客网 时间:2024/05/20 00:37
block是用来保存一段代码(程序运行时产生的代码)
跟函数的区别:函数是在程序运行之前就已经写好的,而block(代码块)是在程序运行中生成保存的代码块
Block:
1》block用来保存一段代码,我们可以称block为代码块
2》block的标记是一个上尖符号(^)
3》block跟函数也有类似之处:1⃣️可以保存代码
2⃣️有返回值
3⃣️有形参
《1》无形参无返回值block:
void(^myBlock)() = ^{//【void】没有返回值 【(^myBlock)】block的名字 【()】没有形参 【^{}】block主体 NSLog(@"我是被block(代码块)保存的代码!"); }; myBlock();//block的调用
输出:
2015-09-29 00:38:56.413 OCStudy[8835:7938557] 我是被block(代码块)保存的代码!【void】没有返回值 【(^myBlock)】block的名字 【()】没有形参 【^{}】block主体
《2》有形参有返回值block:
int(^myBlockWitParam)(int,int) = ^(int a,int b){ return a + b; }; NSLog(@"myBlockWitParam(10,20):%d",myBlockWitParam(10,20));输出:
2015-09-29 01:00:21.460 OCStudy[8859:8024734] myBlockWitParam(10,20):30【int】返回值类型 【(^myBlockWitParam)】block的名字 【(int,int)】形参 【^(int a,int b){}】block主体
《3》指向函数的指针:
//函数int sum(int a,int b) { return a + b;}
//定义指向函数的指针pint (*p)(int,int) = sum; NSLog(@"p(10,40)=%d",p(10,40));
输出:
2015-09-29 01:17:46.904 OCStudy[8875:8112882] p(10,40)=50
《4》block内部可以访问外部的变量,想要在block内部改变外边的变量需要在变量前加上__block关键字修饰
//block访问外部变量 int a = 100; void(^blockValue)() = ^{ NSLog(@"blockValue inside access a=%d",a); }; blockValue();输出:
2015-09-29 01:33:29.871 OCStudy[8912:8184727] blockValue inside access a=100
//普通外部变量在block内部无法被修改,通过加上__block之后,我们可以在block内部对外部变量进行修改 __block int a = 100; void(^blockValue)() = ^{ a = 250; }; blockValue(); NSLog(@"blockValue reset a=%d",a);
输出:
2015-09-29 01:37:27.813 OCStudy[8920:8200029] blockValue reset a=250
《5》利用typedef来定义block
typedef int (^Multi)(int,int); Multi multiAAndB = ^(int a,int b){ return a * b; }; NSLog(@"multiAAndB(10,20)=%d", multiAAndB(10,20));输出:
2015-09-29 01:44:49.439 OCStudy[8932:8233543] multiAAndB(10,20)=200
有了Multi,我们就可以利用Multi类型来定义变量
0 0
- block小解
- Objective-C block小解
- LINQ 小解
- InvalidateRect()小解
- struts小解
- BASE64Decoder小解
- fprintf小解
- RegExp 小解
- 指针小解
- UML 小解
- BASE64Decoder小解
- 线程小解
- 递归小解
- DWR小解
- JSON 小解
- atomic_add小解
- cat小解
- Gallery小解
- centos7 上为php-fpm安装gd扩展库
- 处女博,《染色法与构造法在棋盘上的应用》的理解
- 最快让你上手ReactiveCocoa之基础篇
- 基于java config的springSecurity--单元测试
- java异常基础知识
- block小解
- 菜鸟系列——欧拉函数
- 斯坦福iOS7 2013-2014秋Assignment 6的一种答案 #2
- 写给菜鸟:发CSDN博文常见问题处理
- 图的结构建立和最短路径算法
- NSMutableDictionary
- 递归
- Linux系统编程---记录终端输入的命令
- WOJ-1167