block的使用
来源:互联网 发布:黑桐谷嫂的淘宝店 编辑:程序博客网 时间:2024/04/28 20:16
1.闭包就是能够读取其它函数内部变量的函数
2.Block是一个C级别的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似
3.block的几种适用场合:
- 任务完成时回调处理
- 消息监听回调处理
- 错误回调处理
- 枚举回调
- 视图动画、变换
- 排序
4.block如何申明(对比于c语言中的函数申明)int (^sumBlock)(int, int) = ^(int num1, int mun2){
return num + num2;
}; //block使用^来修饰,第一个int表示block返回整形值,括号里的(int,int)表示传入两个整形参数
or
int (^sumBlock)(int, int);
sumBlock = ^(int num1, int mun2){
return num + num2;
}
5.c函数指正和blocks调用
int (*CFunc) (int a) 函数调用
int result = CFunc(10);
int (^BFunc) (int a) 函数调用
int result = BFunc(10);
6.__block 关键字
一个Block的内部时可以引用自身作用域外的变量的,包括static变量,extern变量或自由变量(定义一个变量的时候,如果不加存储修饰符,默认情况下就是自由变量auto,auto变量保存在stack中的。除了auto之外还存在register,static等存储修饰符),对于自由变量,在Block中只读的。在引入block的同时,还引入了一种特殊的__block关键字变量存储修饰符。
7.对作用域内变量的引用:
int main(int argc, const char * argv[]){ @autoreleasepool { int localCounter = 42; __block char localCharacter; void (^aBlock)(void) = ^(void){ localCharacter = 'a'; NSLog(@"localCounter is %d,localCharacter is %c", localCounter, localCharacter); }; localCounter = 100; localCharacter = 'A'; NSLog(@"localCounter is %d,localCharacter is %c", localCounter, localCharacter); //result is localCounter is 100,localCharacter is A aBlock(); //result is localCounter is 42,localCharacter is a NSLog(@"localCounter is %d,localCharacter is %c", localCounter, localCharacter); //result is localCounter is 100,localCharacter is a } return 0;}程序运行后会再遇到(void)(^aBlock)(void)是会将locationCounter的值记住,但不会运行函数体。
当调用aBlock()时,会执行,block中的locationCounter一旦赋值就不可变了,只读。而locationCharacter由于设置成了__block 类型所以可以改变。
- Block的使用 iphone
- block的简单使用
- oc block的使用
- block的使用
- Block的使用详解
- Block使用的注意
- Block的使用
- Block语法的使用
- SDWebImage的block使用
- Block语法的使用
- block的使用
- block 的使用
- 关于Block的使用
- OC--Block的使用
- iOS block的使用
- block的使用
- block的使用
- ios block 的使用
- IOS开发UI展示之UITableView ──分页加载更多
- jBPM开发入门指南(1)
- linux等待队列 第四篇
- hdu 4003 Find Metal Mineral
- centos下安装libevent
- block的使用
- jBPM开发入门指南(2)
- Js文件在不同浏览器中的加载解析问题
- xcode合并模拟器和真机静态库的编译
- 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS)
- 一位年轻董事长给大学生的三十条忠告【转】
- 1,少年白_假如我还在上大学
- jBPM开发入门指南(3)
- 常用开源库 IOS