IOS基础之 (十二) Block
一 定义
Block封装了一段代码,可以在任何时候执行。
Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。
二 使用
1. 定义函数指针,然后在实现。
1 #import <Foundation/Foundation.h> 2 3 int (^max)(int,int); 4 5 int main(int argc, const char * argv[]) { 6 7 max = ^(int a,int b){ 8 9 return a >b ? a:b; 10 }; 11 12 int maxVal = max(5, 13); 13 NSLog(@"maxVal=%d" , maxVal ); 14 15 return 0; 16 }
在第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可以访问局部变量,但是不能修改。
1 int sum = 10; 2 int (^myBlock)(int) = ^(int x){ 3 int result = sum++; 4 return x * x; 5 };
如果要修改就要在第一行加关键字:__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
一个知识点,你自己看懂了,那是一个层次;你会用,是另外一个层次;你写出来,你写出来让别人懂,那又是更高的一个层次;你用最通俗的言语,把知识点讲出来,让别人一下子明白,又是更高的一个层次。
如果您觉的本篇文章有用,可以赞助作者一些小额的比特币,用来买咖啡,谢谢。 收款地址:3NTPbsJKRKhe1RE1g2rZdr2dFTDgkBUgUa
注:转载需注明出处及作者名,严禁恶意转载,尊重原作者的劳动成果。
如果您觉的本篇文章有用,可以赞助作者一些小额的比特币,用来买咖啡,谢谢。 收款地址:3NTPbsJKRKhe1RE1g2rZdr2dFTDgkBUgUa
注:转载需注明出处及作者名,严禁恶意转载,尊重原作者的劳动成果。