在 Objective C 中,协议方法可以是必需的,也可以是可选的:
@protocol AProtocol
@required
-(void) aRequiredMethod;
@optional
-(void) anOptionalMethod;
@end
有没有一种优雅的方式来表示符合协议的对象必须响应一组方法中的至少一个,我的梦想是这样的
@protocol AProtocol
@anyof
-(void) onePossibleMethod;
-(void) anotherPossibleMethod;
@optional
-(void) anOptionalMethod;
@end
EDIT:
这是(据我所知),不可能的,如果声明为符合给定协议的类完全由可选方法组成,是否有办法引发编译时警告
@protocol AProtocol
@optional
-(void) onePossibleMethod;
-(void) anotherPossibleMethod;
@end
至少其中一项未能实施。
在 Objective-C 中没有很好的方式来表达这一点。如果你必须这样做,我认为最惯用且代码膨胀最少的方法是这样的:
@protocol AProtocol
@required
- (SEL)methodToUse; // returns one of "onePossibleMethod" or "anotherPossibleMethod"
@optional
-(void) onePossibleMethod;
-(void) anotherPossibleMethod;
-(void) anOptionalMethod;
@en
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)