我正在将 cpp 代码移植到 Objective C 中。
在cpp
中,我们可以将一个类作为友元类
添加到另一个类中,并使用它的所有公共(public)函数和变量。
我知道Objective C不支持友元类
概念。
如何在 Objective C 中将一个类作为另一个类的友元
最佳答案
如果您有两个紧密耦合的类,那么您可以使用一些简单的技巧来公开更简单的公共(public)接口(interface)。例如,
在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
来获取私有(private)函数。如果您正在编写框架,则不要在框架 header 中包含 BananaPrivate.h
。
这与 C 中完成封装的方式相同。在我看来,它比 C++
中的 friend
关键字的破坏性要小得多,但它超出了本答案的范围解释一下原因。
如果您将 Banana 实现为类集群,您也可以通过这种方式公开私有(private)成员变量,但这有点疯狂,我不推荐这样做。如果您需要类之间更紧密的耦合,您可能需要对这部分代码使用 C 习惯用法。
关于objective-c - Objective C 中的友元类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6006701/