Block 封装了一段代码,可以在任何时候执行,
Block 是作为函数阐述或者函数的返回值,而其本身又可以带输入参数或返回值。
Block 是ios4.0开始的那个时候已经很成熟了,苹果公司推荐使用Block
Block 需要编译器运行时的堆栈支持,可以作为代理的很好支持
使用方式 与c语言很相似,
int (* CFunc) (int a)
int (^ CBlock) (int a)
可以和typednf 一起使用
Block block 前面没有*号
typedef int (^ MyBlock3) (int a,int b);
int main(int argc, char *argv[])
{
@autoreleasepool {
// 1 返回值类型 block 参数类型
void (^ MyBlock) (void) = nil;
MyBlock = ^(void){
NSLog(@"in block");
};
NSLog(@"before block");
// 调用block 方法
MyBlock();
// 2 返回值 方法名 参数 参数
int (^MyBlock2) (int a, int b) = ^(int a ,int b){
int c = a + b;
return c;
};
int result = MyBlock2(10,10);
NSLog(@"%d",result);
// 3 typeDef 已定义好block的返回类型
MyBlock3 my= ^(int a, int b){
NSLog(@"c is %d ", a + b);
return 0;
};
//可设置回调;重新调用方法
my (20,10);
return UIApplicationMain(argc, argv, nil, NSStringFromClass([XiangAppDelegate class]));
}
}