4

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

4

3 回答 3

6

解决这个问题的一种方法是创建一个包含私有接口类别的私有头文件,如下所示:

//MyClass.h

@interface MyClass : NSObject

- (void)publicMethod;

@end

//MyClass_private.h

@interface MyClass ()

- (void)protectedMethod;

@end

MyClass.m 及其子类导入常规和 _private 标头,使 _private 声明与受保护的范围相同。层次结构的客户仅使用常规标题。

于 2013-01-05T05:32:29.923 回答
4

没有保护只允许用于变量而不是方法

于 2013-01-05T03:19:19.947 回答
-1

Objective-c 没有明确支持受保护的方法。

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

于 2013-01-05T03:28:05.130 回答