iOS Block使用
2015-06-08 09:40
295 查看
Block 一般是用来表示、简化一小段的程式码,它特别适合用来建立一些同步执行的程式片段、封装一些小型的工作或是用来做为某一个工作完成时的回传呼叫(callback) 。
Block实体形式如下:
^(传入参数列){行为主体};
1:Block可以访问局部变量,但是不能修改。
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
multiplier ++;//编译报错
return num * multiplier;
};
如果要修改就要加关键字:__block
__block int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
multiplier ++;//编译报错
return num * multiplier;
};
2:作为函数的参数,blocks某种意义上替代了回调函数或者delegate。当函数调用了,假设某个事件触发,这时blocks里的内容就会运行。这样有利于代码的整合和阅读,你不需要到处去实现委托方法了。
3:Block Pointer是这样定义的:
回传值(^名字)(参数列);
4://5:可以直接在block里面修改outA的值,
static int outA = 8;
//__block int outA = 8;
int (^myPtr)(int) = ^(int a){ outA = 5; return outA + a;};
int result3 = myPtr(3); //result的值是8,因为outA是static类型的变量
NSLog(@"result=%d", result3);
Block实体形式如下:
^(传入参数列){行为主体};
1:Block可以访问局部变量,但是不能修改。
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
multiplier ++;//编译报错
return num * multiplier;
};
如果要修改就要加关键字:__block
__block int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
multiplier ++;//编译报错
return num * multiplier;
};
2:作为函数的参数,blocks某种意义上替代了回调函数或者delegate。当函数调用了,假设某个事件触发,这时blocks里的内容就会运行。这样有利于代码的整合和阅读,你不需要到处去实现委托方法了。
3:Block Pointer是这样定义的:
回传值(^名字)(参数列);
4://5:可以直接在block里面修改outA的值,
static int outA = 8;
//__block int outA = 8;
int (^myPtr)(int) = ^(int a){ outA = 5; return outA + a;};
int result3 = myPtr(3); //result的值是8,因为outA是static类型的变量
NSLog(@"result=%d", result3);
相关文章推荐
- 涨姿势!iOS零碎知识小集
- 如何处理iOS中照片的方向
- 非常详细讲解如何构建iOS推送
- iOS开发笔记19---蓝牙4.0
- iOS开发Delegate,Notification,Block使用心得
- 【ios开发学习 - 第二课】iOS项目目录结构
- iOS测试与集成工具总结
- iOS开发拓展篇—音频处理(音乐播放器6)
- iOS开发拓展篇—应用之间的跳转和数据传
- iOS开发拓展篇—xib中关于拖拽手势的潜在错误
- iOS开发拓展篇-XMPP简单介绍
- iOS开发拓展篇—音频处理(音乐播放器5)
- IOS 获取软件版本号的方法
- iOS开发拓展篇—音频处理(音乐播放器4)
- iOS开发拓展篇—音频处理(音乐播放器2)
- iOS开发拓展篇—音频处理(音乐播放器3)
- iOS开发拓展篇—音频处理(音乐播放器1)
- iOS开发拓展篇—CoreLocation地理编码
- iOS开发拓展篇—CoreLocation定位服务
- iOS开发拓展篇—封装音频文件播放工具类