目标C中的朋友类

时间:2011-05-15 05:35:50

标签: objective-c

我正在将cpp代码移植到Objective C中。

cpp中,我们可以将一个类friend class添加到另一个类中,并使用其所有公共函数和变量。

我知道Objective C does not support friend class概念。

如何将一个类作为Objective C中另一个类的朋友

1 个答案:

答案 0 :(得分:6)

如果你有两个紧密耦合的类,那么你可以使用一些简单的技巧来公开一个更简单的公共接口。例如,

Banana.h

@interface Banana : NSObject
- (BOOL)isPeeled;
@end

Monkey.h

@interface Monkey : NSObject
- (void)eat:(Banana *)aBanana;
@end

BananaPrivate.h

@interface Banana (PrivateMethods)
- (void)peel;
@end

然后您的Monkey.m文件可以导入BananaPrivate.h以获取私有函数。如果您正在编写框架,那么您不会在框架标题中包含BananaPrivate.h

这与在C中完成封装的方式相同。在我看来,它比friend中的C++关键字要小得多,但是解释原因超出了这个答案的范围。

如果将Banana实现为类集群,也可以通过这种方式公开私有成员变量,但这有点疯狂,我不推荐它。如果您需要在类之间进行更紧密的耦合,那么您可能希望在代码的这一部分使用C语言。