在Objective-c中,我如何创建一个所有子类都可以访问但不能公开访问的方法

时间:2012-11-28 02:41:54

标签: objective-c inheritance

假设我创建了一个viewController。然后我想创建另一个像第一个一样的viewController。看起来像是继承的工作。

然而,originalViewController的许多任务都是私有方法,我想最小化公共接口。

如果我公开宣布这些方法是公开的,那么私有事物私有化的目标就无法实现。

如果我将这些方法声明为private,那么子类不知道那些方法。

如果我为子类创建一个特殊的.h文件,那就太尴尬了。

那么,做这种事情的行业标准方式是什么?

在C ++中,我们会使用受保护的方法或函数来实现这一目标吗?

更新

我把

#import "BGGoogleMap+protected.h"

@implementation BGGoogleMap ()

@end

它不起作用。它要求标识符。

2 个答案:

答案 0 :(得分:4)

除了Catfish_Man建议的内容之外,您还可以在您的类上创建只有您的子类可以访问的类别。 Here are the docs了解如何做到这一点。基本上,您只需为您的类创建一个新接口,并在其中放置任何私有方法。像这样:

@interface MyClass (MyClass_Private)
// Method declarations
@end

将它们放在Foo_Internal.h中,并在子类中包含Foo_Internal.h,但不要公开它。

答案 1 :(得分:3)

将标题拆分为Foo.h和Foo_Internal.h听起来是最好的方法。