IOS基础之 (十二) Block
2016-03-05 13:04
429 查看
一 定义
Block封装了一段代码,可以在任何时候执行。Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。
二 使用
1. 定义函数指针,然后在实现。#import <Foundation/Foundation.h> int (^max)(int,int); int main(int argc, const char * argv[]) { max = ^(int a,int b){ return a >b ? a:b; }; int maxVal = max(5, 13); NSLog(@"maxVal=%d" , maxVal ); return 0; }
在第3行定义函数指针,在第7行实现函数指针,在12行调用函数指针。
2. 在定义函数指针的同时,并实现。
#import <Foundation/Foundation.h> int (^max)(int,int) = ^(int a, int b){ return a > b ? a : b; }; int main(int argc, const char * argv[]) { int maxVal = max(5, 13); NSLog(@"maxVal=%d" , maxVal ); return 0; }
3.用typedef先声明类型,再定义变量进行赋值
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { typedef int (^max)(int,int); max getMax = ^(int a, int b){ return a > b ? a:b; }; int maxVal = getMax(5, 13); NSLog(@"maxVal=%d" , maxVal ); return 0; }
Block可以访问局部变量,但是不能修改。
int sum = 10; int (^myBlock)(int) = ^(int x){ int result = sum++; return x * x; };
如果要修改就要在第一行加关键字:__block
__block int sum = 10; int (^myBlock)(int) = ^(int x){ int result = sum++; return x * x; };
资料参考:
http://www.cnblogs.com/ljcgood66/p/4970628.html http://www.cnblogs.com/e8net/p/3750825.html http://www.cnblogs.com/goodboy-heyang/p/5240004.html
相关文章推荐
- 分享Android及IOS开源实例代码网址
- [iOS]使用Xcode打包iOS的IPA文件
- iOS多线程开发:GCD
- ios获取权限
- iOS中按钮取消重复选择执行同一事件的方法
- iOS个人封装图片下载:Block与Delegate两种方式
- 位与运算在iOS中的使用
- iOS开发如何通过UMeng的错误分析解决crash问题
- nagios服务端安装
- iOS开发证书"此证书的签发者无效"解决方法
- 17个提升iOS开发效率的必用工具
- iOS开发-CocoaPods使用详细说明
- IOS异常笔记
- Codeforces Round #344 (Div. 2) C 题题解 (贪心+单调栈)
- IOS源码整理
- iOS 高效添加圆角效果实战讲解
- Codeforces Round #344 (Div. 2) B 题题解 (暴力)
- iOS开发----Xcode7升级之后插件无法使用与不小心点击Skipbundle的解决办法
- iOS应用开发中使用Auto Layout来适配不同屏幕尺寸
- iOS多张图片合成一个视频