1Block 封装了一段代码,可以在任何时候执行
2Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值
Block的标志:^
//block跟函数很像,可以保存代码,有返回值,有形参
指向函数的指针
定义Block,定义时候不会被执行(没有参数,没有形参的block)
void (^myblock)() = ^{ NSLog(@“sdfdsfsdf")}; 如果没有形参可以省略后面的()
调用Block变量调用block内部的代码
myblock();
int (^sumBlock)(int,int)= ^(int a,int b){
return a+b;
};
int c = sumblock(10,11);
Block 内部可以访问外面的变量,默认情况下内部不能修改外面的局部变量,给局部变量加上__block关键字,这个局部变量就可以block内部修改
block总结
1.如何定义block变量:
int (^myBlock)();
void (^myBlcok)(int,int);
2如何利用block封装代码:
^(int a,int b){
return a-b;
};
^(){NSLog(@“sdfs”);};
^{NSLog(@“safdds”);};
3 block访问外面变量
blcok内部可以访问外面的变量
默认情况下,block不能修改外面的局部变量
给局部变量加上__block关键字,这个局部变量就可以在block内部修改
4利用typedef定义block类型
typedef (^MyBlock)(int,int);
//以后就可以利用MyBlock这种类型来定义block变量
MyBlock b1,b2;
网友评论