Block是一个很是有特点的语法,它能够把一个代码块做为一个变量来保存,也能够经过函数传递变量,而后让其余的对象来执行这一代码块。能够保存传递并在其余地方执行的代码块,这是我对Block的理解,也是我以为Block最吸引个人地方。ios
/**直接定义——返回Block指针 * ^返回类型<可省略>(参数类型 参数)<没有参数可省略>{ * 代码块; * }; */ ^int(int a){ return a; };
/**使用Block——返回Block返回值 * Block(参数) */ ^int(int a){ return a; }(5);
/**声明定义Block变量 * 返回类型 (^变量名)(参数类型); */ int (^example)(int); example = ^(int a){ return a; };
/**类型声明定义Block变量 * typedef 返回类型 (^Block名)(参数类型); */ typedef int (^Example)(int); Example eg = ^(int a){ return a; }; eg(5);
__block
__weak
__block
或者__weak
修饰的变量操做才有意义@property (nonamatic, copy) ABlock eg;