在Objective C中,协议方法可以是必需的或可选的:
@protocol AProtocol @required -(void) arequiredMethod; @optional -(void) anOptionalMethod; @end
是否有一种优雅的方式来说符合协议的对象必须至少响应一组方法中的一种,我的梦想就像是
@protocol AProtocol @anyof -(void) onePossibleMethod; -(void) anotherPossibleMethod; @optional -(void) anOptionalMethod; @end
编辑:
这是(据我所知),不可能,如果声明符合完全由可选方法完成的给定协议的类,是否有办法提出编译时警告
@protocol AProtocol @optional -(void) onePossibleMethod; -(void) anotherPossibleMethod; @end
未能实施至少其中一个.
解决方法
@H_404_19@ 在Objective-C中没有很好的方法来表达这一点.如果你必须这样做,IMO最常用和最少代码膨胀的方式是这样的:@protocol AProtocol @required - (SEL)methodToUse; // returns one of "onePossibleMethod" or "anotherPossibleMethod" @optional -(void) onePossibleMethod; -(void) anotherPossibleMethod; -(void) anOptionalMethod; @en