黑马程序员-------Block
2015-10-12 00:36
260 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
1.import的作用
(一) 简介
Block封装了一段代码,可以在任何时候执行
Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。
苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场用的很多
(二) block的定义
定义了一个叫MySum的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现
2、如何利用block封装代码
1> 标准形式
2> 省略参数形式
3> 省略参数,省略小括号形式
3、block访问外面变量
Block可以访问局部变量,但是不能修改。
如果要修改就要加关键字:__block
4、利用typedef定义block类型
typedef int (^MyBlock)(int, int);
以后就可以利用MyBlock这种类型来定义block变量
(三) Blocks和函数指针对比
1、 定义
1> 定义函数指针:
2> 定义Blocks:
2、调用
1> 调用函数指针
2> 调用Blocks
(四) Blocks的赋值
1、在声明的同时定义变量,然后赋值
也可先用typedef先声明类型,再定义变量进行赋值
(五) 全局Blocks
在文件级别,可以把block作为全局标示符:
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
1.import的作用
1.import的作用
(一) 简介
Block封装了一段代码,可以在任何时候执行
Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。
苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场用的很多
(二) block的定义
int (^MySum)(int, int) = ^(int a, int b) { return a+b; };
定义了一个叫MySum的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现
2、如何利用block封装代码
1> 标准形式
^(int a, int b) { return a - b; };
2> 省略参数形式
^() { NSLog(@"----------"); };
3> 省略参数,省略小括号形式
^ { NSLog(@"----------"); };
3、block访问外面变量
Block可以访问局部变量,但是不能修改。
int sum = 10; int (^MyBlock)(int) = ^(int num) { sum++;//编译报错 return num * sum; };
如果要修改就要加关键字:__block
__block int sum = 10;
4、利用typedef定义block类型
typedef int (^MyBlock)(int, int);
以后就可以利用MyBlock这种类型来定义block变量
MyBlock block;
MyBlock b1, b2;
b1 =^(int a, int b) { return a - b; };
MyBlock b3 =^(int a, int b) { return a - b; };
(三) Blocks和函数指针对比
1、 定义
1> 定义函数指针:
int (*myFn)();
2> 定义Blocks:
int (^MyBlocks)(int,int);
2、调用
1> 调用函数指针
(*myFn)(10, 20);
2> 调用Blocks
MyBlocks(10, 20);
(四) Blocks的赋值
1、在声明的同时定义变量,然后赋值
int (^MySum)(int,int) = ^(int a,int b) { return a + b; };
也可先用typedef先声明类型,再定义变量进行赋值
typedef int (^MySum)(int,int); MySum sum = ^(int a,int b) { return a + b; };
(五) 全局Blocks
在文件级别,可以把block作为全局标示符:
#import <stdio.h> int GlobalInt = 0; int (^getGaobalInt)(void) = ^{return GlobalInt;};
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
1.import的作用
相关文章推荐
- 不想当一辈子码农,这有份IT民工进阶手册
- 程序员常去的6个头条分享站点
- 蜂窝教育软件工程师培训
- 山东润达软件:优秀程序员的18大法则
- 黑马程序员——Foundation---NSMutableArray
- java 面试题三十二 mysql查询面试题
- 黑马程序员——面向对象
- 《剑指Offer》面试题:平衡二叉树
- 面试题32:从1到n整数中1出现的次数
- 黑马程序员——JavaSE之对单例枚举和反射的看法一
- 今天面试了两个程序猿(二)
- 也许每个农村出来的码农都有个田园梦
- [京东 + 华为面试 + 金山笔试]自己总结
- 面试,一点小心得
- 从Lumia退役看为什么WP走向没落(从程序员与市场开发的角度,讲的真棒!)
- 黑马程序员——JavaSE之多线程中关于锁的理解 二
- 黑马程序员——OC中的协议:protocol
- 黑马程序员——OC中的block:代码块
- reverse words in a sentence
- 《剑指Offer》面试题:连续子数组的最大和