如果模块内部需要外部传入对应的代码块(block),那么就需要回调来实现,如果接收回调参数的方法外,也有其他方法需要这个block,那么可以使用函数指针来保存这个block,让它在整个类中可用。
回调函数的声明规则:
-(instancetype)initChangePlayerViewCallBack:(void (^)(ChangeUIButtonType type , NSString * startPosition) )callback;
其中,void是返回值 ,(参数类型 参数名 ,参数类型 参数名,....) callback是该类的函数存储对应的参数名。使用的话就可以 callback(参数1,参数2,……),参数的个数和类型要一致。
函数指针的声明也很简单,和需要接收的方法的参数和返回值一致就可以,changePlayerViewCallback是新的属性名。后续就可以使用changePlayerViewCallback来调用了。使用方法和callback一致。
void (^changePlayerViewCallback)(ChangeUIButtonType type , NSString * startPosition)
如果想接收SEL类型作为参数来接收代码块。一定要加一个参数类型为id的target,用来记录改SEL的方法在哪一个类中,不然会找不到对应的SEL方法。
-(void)addButtontarget:(id)target selector:(SEL)selector{}
外部使用的话就可以这样:
[speedView addButtontarget:self selector:@selector(SpeedButtonClick:)];