Block纠结了很久,总是看理论的时候明白,用起来的时候头又会晕晕的,这次希望可以真正理解。
Block见过很多,很多地方都会用到 , 尤其是将他放到一个方法里面 ,往往会看到类似这样的一段代码
[twoVC funcWithBlock:^(NSString*name,NSInteger age,BOOL isBoy) {
//这里只是举个例子
}];
说实话 我一直纠结 这个^(NSString *name,NSInteger age,Bool isBoy){}这是个什么东西,这段代码的默认提示是这样的^(NSString *name, NSInteger age, BOOL isBoy)perBlock回车之后就是刚才的样子,为什么会这样。
不怕笑话,这个问题困扰我很久,也是自己不注意基础的代价吧
回看一下Block的创建
void(^block)(NSString *inputStr) = ^(NSString *inputStr)
{
//回调执行语句
}
如果这样比较可能会更清晰,
^(NSString *inputStr){}
VS
^(NSString*name,NSInteger age,BOOL isBoy) {}
这样会清晰一些了,方法里面传入的参数是一个block,而这个参数写起来的方式比较奇怪 是^(NSString*name,NSInteger age,BOOL isBoy) {}酱紫的,如果可以吧^(NSString*name,NSInteger age,BOOL isBoy) {}简单看做是一个参数,这样也就理顺了
在方法执行内部
-(void)funcWithBlock:(personBlock)perBlock{
self.perBlock= perBlock;
}
用self保存一下之后,你想要在哪使用这个block就变得更加的灵活了
当然这样看来 typedef void(^personBlock)(NSString*name,NSInteger age ,BOOLisBoy); 这样使用起来就更方便了
本文只是记录自己对于Block理解的过程,也希望大家给予点评
网友评论