objective-c – 需要实现至少一组方法的目标C协议

前端之家收集整理的这篇文章主要介绍了objective-c – 需要实现至少一组方法的目标C协议前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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

未能实施至少其中一个.

解决方法

在Objective-C中没有很好的方法来表达这一点.如果你必须这样做,IMO最常用和最少代码膨胀的方式是这样的:
@protocol AProtocol

@required
- (SEL)methodToUse; // returns one of "onePossibleMethod" or "anotherPossibleMethod"

@optional
-(void) onePossibleMethod;
-(void) anotherPossibleMethod;
-(void) anOptionalMethod;

@en

猜你在找的C&C++相关文章