【问题标题】:iOS: Allowing Only A Certain Class Access to a Specific Private Method in another Class?iOS:只允许某个类访问另一个类中的特定私有方法?
【发布时间】:2014-10-06 03:55:19
【问题描述】:

我在 A 类中有一些公共方法和价格方法。我在 B 类中使用相同的方法,但我不想在两个类中复制和粘贴这些方法,而是想从 B 类访问 A 类的私有方法。

问题是我不希望任何其他类能够访问除 B 之外的这些特定私有方法。

最好的方法是什么?

附:我想将私有方法公开,但是任何其他类都可以访问它们,这是我不想要的(这是针对开源项目的)。我不介意复制和粘贴方法,但我很想知道处理此类事情的“正确”方法是什么。

谢谢!

【问题讨论】:

  • 好吧,除非其他类导入 A 类,否则这不是问题吗?会吗?
  • 但是其他类确实导入了它,因为 A 类和 B 类都有开发人员可以访问的公共方法,我宁愿不合并这两个类,因为它们相当大并且恰好是不同的类别NSObjects。
  • 你想在这里防范什么? (以及这是一个开源项目有什么关系?)您是否担心人们错误地依赖您将来可能想要更改的方法,或者您是否试图隐藏某些功能或其他东西?
  • 这些是“主要公共方法”的辅助方法,我只是喜欢保持项目干净。因此,当开发人员要输入方法的名称时,我不希望向他们建议这些辅助方法,因为他们永远不会使用它们,或者至少我不希望它们使用它们。这是我个人的喜好。这也是我提到开源项目的原因。

标签: ios objective-c class methods private


【解决方案1】:

您可以使用私有标头

MyClassA.h

@interface MyClassA : NSObject

- (void)publicMethod;

@end

MyClassA_Private.h

#import "MyClassA.h"

@interface MyClass (Private)

- (void)packageMethod;

@end

【讨论】:

  • 我建议 MyClassA_Private.h 使用类扩展,并在 MyClassA@implementation 之前由 #imported 表示扩展。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多