ps:本文针对初学者
block对于初学者,会觉得block比较复杂,很难理解. 尤其是在作为参数的时候. 一般在实际使用的时候我们常用block的两种方式, 一种是 作为 "成员变量", 另一种是作为参数(初学者比较难理解的); 笔者会用一些比较简单的方式进行讲解
初学者如果不熟悉的话,可以使用inline(ps:最好完全手打,不要用),
===1.作为成员变量使用(就像普通变量)===
一般就是初始化,赋值,然后调用. 就像使用普通的变量一样,这里不做说明
void(^blk)(int)/*声明*/ = ^(int a)/*赋值,a为形参*/ {
NSLog(@"%d",a);
};
blk(2);/*调用*/
===2.作为参数使用===
作为参数使用只要记住 传递实参的时候, 相当于对block 进行赋值, 剩下的就好理解了
- (void)viewDidLoad {
[super viewDidLoad];
//这里是调用 didBlock: 方法
[self didBlock:^(int a) {
NSLog(@"%d",a); /*调用方法时, 这里实参传递(就相当于赋值)*/
}];
}
/**
* 方法
*
* @param blk1 参数名
*/
- (void)didBlock:(void(^)(int))blk1 /*声明*/{
blk1(2);/*调用*/
}