我将cpp代码移植到Objective C中.
在cpp我们可以添加一个类作为friend class另一个类,并使用其所有的公共函数和变量.
我知道这个Objective C does not support friend class概念.
如何在Objective C中将类作为另一个类的朋友
如果你有两个紧密耦合的类,那么你可以使用一些简单的技巧来公开一个更简单的公共接口.例如,
在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语言.