我正在将cpp代码移植到Objective C中。
在cpp
中,我们可以将一个类friend class
添加到另一个类中,并使用其所有公共函数和变量。
我知道Objective C does not support friend class
概念。
如何将一个类作为Objective C中另一个类的朋友
答案 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语言。