是否有@protected方法?

时间:2013-01-05 03:13:51

标签: objective-c ios

我想在BaseObject中声明一个方法,而这个方法只能由SubObject实现,我该怎么做?我发现允许在方法上使用@protected。

3 个答案:

答案 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未明确支持受保护的方法。

为了模拟受保护的方法,我根本不在头文件中包含函数定义。这允许子类实现该方法,并且不允许在外部调用该方法(又称“受保护”)。