代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。
//block作为函数的参数 //函数返回值类型 函数名(block的声明格式) void fun(int (^block)(int a,int b)){ int sum=block(5,6); NSLog(@"%d",sum); } void fun1(NSString *(^myBlock)(NSString *s),NSString *s1){ NSLog(@"%@",myBlock(s1)); } int main(int argc, const char * argv[]) { @autoreleasepool { //当一个block作为函数的参数是,其返回值类型、形参个数及类型要与函数形参格式保持一致 int (^myBlock)(int a,int b)=^(int a,int b){ NSLog(@"%d,%d",a,b); return a*b; }; //函数形参是block,调用时,直接传block的名字就行 fun(myBlock); //调用的另一种方式:内联 //内联block格式:^返回值类型 (形参列表){} fun(^int(int a, int b) { return a-b; }); fun1(^NSString *(NSString *s) { return s; }, @"123"); } return 0; }