http://blog.youkuaiyun.com/victormokai/article/details/19612267
类似于Java的匿名类,称为代码段
1、定义:
- 返回值 (^block名)(参数1,参数2...) = ^(参数1,参数2...){}
- int (^sum)(int,int) = ^(int a,int b){
- return a+b;
- };
- sum(1,2);
是不是有点像C的函数指针哦
来点更有意思的
- #import <Foundation/Foundation.h>
- typedef int (^SUM)(int,int);
- int main(int argc, const charchar * argv[])
- {
-
- @autoreleasepool {
-
- SUM sum= ^(int a,int b){
- return a+b;
- };
- sum(1,2);
- }
- return 0;
- }
注意,在代码段中的默认能访问局部变量,不能修改,如需修改,加上
__Block
关键字即可
如
- #import <Foundation/Foundation.h>
- typedef int (^SUM)(int,int);
- int main(int argc, const charchar * argv[])
- {
-
- @autoreleasepool {
- int a_ = 0;
- __block int b_ =1;
-
- SUM sum= ^(int a,int b){
- a_ = a;
- b_ = b;
-
- return a+b;
- };
- sum(1,2);
- }
- return 0;
- }