假设我创建了一个 viewController。然后我想创建另一个与第一个类似的 viewController。看起来像是继承的工作。
然而,originalViewController 的许多任务都是私有(private)方法,我想尽量减少公共(public)接口(interface)。
如果我将这些方法声明为 public 那么好,保持私有(private)事物私有(private)的目标就没有实现。
如果我将这些方法声明为私有(private),那么子类就不知道这些方法。
如果我为子类创建一个特殊的 .h 文件,会很尴尬。
那么做这类事情的行业标准方法是什么?
在 C++ 中,我们会使用 protected 方法或函数来完成这项工作吗?
更新:
我放
#import "BGGoogleMap+protected.h"
@implementation BGGoogleMap ()
@end
这是行不通的。它要求提供标识符。
最佳答案
除了 Catfish_Man 的建议之外,您还可以在您的类上创建只有您的子类可以访问的类别。 Here are the docs如何做到这一点。基本上,您只需为您的类创建一个新接口(interface)并将所有私有(private)方法放入其中。像这样:
@interface MyClass (MyClass_Private)
// Method declarations
@end
将它们放在 Foo_Internal.h 中,并在您的子类中包含 Foo_Internal.h,但不要将其公开。
关于objective-c - 在 Objective-c 中,我如何制作一个所有子类都可以访问但不能公开访问的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13596909/