Objective- C 编程 Block
来源:互联网 发布:淘宝 国际米兰球衣 编辑:程序博客网 时间:2024/04/30 14:42
Objective- C 编程 Block
一.Block语法
Block是块语法,本质上是匿名函数(没有名称的函数).标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数.Block语法和函数指针很相似.因为Block是匿名函数,block变量存放的函数的实现,通过block变量能直接调用函数.代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数,并得到返回值.
Block语法:下图是如何把块变量赋值给一个变量的语法讲解:
Block类型:int (^)(int)
Block变量:myBlock
Block值:^int (int num) {return 7 * num;}
即: ^返回值类型 (参数列表) {函数体} 其中 返回值类型 可以省略
二.Block使用
int (^block1) (int x, int y) = ^(int x, int y)
{
return x + y;
}
int a = block1(2, 4);//block的使用和函数指针的使用类似
NSLog(@”%@”, a);
打印结果:6
Block进行typedef:
Typedef int (^BlockType) (int x, int y);
原类型是:int (^) (int x, int y)
新类型是:BlockType
Block写法:
int (^block1) (int x, int y) = ^(int x, int y)
{
return x + y;
};
等价于:
BlockType block1 = ^(int x, int y)
{
return x + y;
};
三.Block 举例
1.block 与 局部变量
局部变量可以使用,但是不能改变
在代码块中改变局部变量编译不通过.怎么在代码中改变局部变量呢?在局部变量前面加上关键字:__block
2.block与全局变量
3.参数是NSString *的代码块
4.使用block进行数组排序
打印结果是:sortArray:(
bb,
cc,
dd,
ee
)
5.代码块的递归调用
代码块想要递归调用,代码块变量必须是全局变量或者是静态变量,这样在程序启动的时候代码块变量就初始化了.可以递归调用
打印结果:
num:4
num:3
num:2
num:1
- Objective- C 编程 Block
- 【读书笔记】Objective-C高级编程--Block概要
- 【《Objective-C 高级编程》 学习笔记--Block】
- Objective-C编程 - 关于Block的要点
- objective-c block 讲解
- objective-c block 讲解
- objective-c block 详解
- objective-c block 讲解
- objective-c block 讲解
- Objective-C block
- objective-c block 详解
- objective-c block 详解
- Objective-C中的Block
- Objective-C中的Block
- objective-c block 详解
- Objective-C中的Block
- Objective-C中的Block
- objective-c block 讲解
- Square Coins
- 生成设备对象
- 数据结构之二叉排序树
- String to Integer(atoi)
- 2-11. 两个有序链表序列的合并(15)
- Objective- C 编程 Block
- 数据结构之平衡二叉树
- 《数据结构》实验二:线性表的实验
- 九度OJ 1043 蔡勒公式
- deepin终于登录dr。com成功了,大笑三声
- Demo
- 最长上升子序列(Longest increasing subsequence)
- Codeforces #274 (Div. 2) A. Expression(水题)
- 首次自考总结——2014.10.18-19