iOS_Blocks
来源:互联网 发布:房价会如何变化 知乎 编辑:程序博客网 时间:2024/06/06 18:47
iOS_Blocks
用一句话来表示Block:带有自动变量(局部变量)的匿名函数
语法
返回值类型 (^block名称) (参数列表) 表达式>
(1)没有函数名
(2)带有”^”
(3)返回值类型可省略:如果表达之中含有return语句,使用返回值类型,如果没有,使用void类型.例:
int (^count){return count + 1}; //返回值为int类型 void (^void){printf("blocks\n")};//可省略为如下 ^ {printf("blocks\n")};//参数列表(为空时)也可省略
Block类型变量
(1)block类型变量和一般的C语言变量完全不同,可作为局部变量,函数参数,静态变量和全局变量来使用.
(2)typedef声明block变量
typedef int (^blcok_t)(int); //typedef 返回值 (^block名)(参数)
(3)Block截获自动变量值
int day = 256;int val = 10;const char *fmt = "val = %d\n";void (^blk)(void) = ^{printf(fat,val);}val = 2;fat = "these values were changed.val = %d\n";blk();//该段代码的执行结果为 val = 10//block 可以截获自动变量的值并保存,在block代码块中使用.
__block说明符
block截获并保存自动变量的值,但是保存之后无法修改,如果需要在block表达式中修改自动变量的值,需要给自动变量附加__block说明符.例:
__block int val = 0;void (^blk)(void) = ^{ val = 1;//修改变量值(不加__block会发生编译错误)}blk();print("val = %d\n",val);//结果为 val = 1;
0 0
- iOS_Blocks
- PHP发送POST请求
- GitHub上README.md排版样式教程
- svn的使用小细节
- NSCharacterSet 字符操作
- 使用WebRTC搭建前端视频聊天室——点对点通信篇
- iOS_Blocks
- Android 的Paint(画笔)及Canvas(画布)
- mybatis实战教程(mybatis in action),mybatis入门到精通
- JQuery EasyUI后台UI框架使用连载
- Java程序员最常用的8个Java日志框架
- Your build settings specify a provisioning profile with the UUID, no provisioning profile was
- Android图片编辑
- SQLServer2008数据库安装和端口号登陆
- 百度地图按名称搜索定位