我想在BaseObject中声明一个方法,而这个方法只能由SubObject实现,我该怎么做?我发现允许在方法上使用@protected。
答案 0 :(得分:5)
解决此问题的一种方法是创建一个包含私有接口类别的私有头文件,如下所示:
//MyClass.h
@interface MyClass : NSObject
- (void)publicMethod;
@end
//MyClass_private.h
@interface MyClass ()
- (void)protectedMethod;
@end
MyClass.m及其子类导入常规和_private标头,使_private声明的范围与protected相同。层次结构的客户仅使用常规标题。
答案 1 :(得分:4)
仅允许变量而非受保护
答案 2 :(得分:-1)
objective-c未明确支持受保护的方法。
为了模拟受保护的方法,我根本不在头文件中包含函数定义。这允许子类实现该方法,并且不允许在外部调用该方法(又称“受保护”)。