[英]What is the natural way to express C++ “protected virtual” idiom in Objective-C?
在C ++中,当基类实现其所有算法时,有一个模板方法惯用法,但排除了一些细微的差异(通常必须处理数据格式等),以便子类以受保护的虚拟方法的形式实现,而这些方法是层次结构无法访问的客户。
在Objective-C中表达相同习惯用法的最自然方法是什么?
谢谢。
我将创建一个带有类别的单独的头文件。 您可以将该类别命名为Protected
:
@interface MyClass(Protected)
// Place your "protected" methods here.
@end
普通班级用户不会#import
该文件,而仅主班级文件。 但是实现和子类也会#import
包含Protected
类别的头文件。
如果方法是可选的,则可以改用协议:
@protocol MyClassProtected
// Required methods here.
@optional
// Optional methods here.
@end
我觉得这不是一个比类别更好的解决方案,但它可以工作。
然后,第三种方法是简单地避免使用约定:相应地命名受保护的方法:
@interface MyClass {
}
// This method is not to be called by users, but subclasses may
// overwrite to do something else.
- (void) protected_someMethodDoingFoo;
@end
对我来说,这听起来像您正在要求Java抽象类的概念。 对抽象Objective C类的讨论是否有帮助?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.