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

标签 objective-c inheritance

假设我创建了一个 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/

相关文章:

JavaScript:从父类(super class)实例内部创建子类

objective-c - 获取展示应用

c++ - 检测公共(public)基类

c++ - const 引用、作为参数的构造函数和可编译性

c++ - 继承 std::stack 会导致 clang 出错,但适用于 gcc

java - hibernate中的单表继承显示SQL语法异常

iphone - 线程核心数据

iphone - 在 iOS 中关闭 UIPickerView

ios - 使用纯色创建多个 UIImage

objective-c - 将 UITableViewController 添加到其他 View