gpt4 book ai didi

objective-c - Objective C 中的友元类

转载 作者:行者123 更新时间:2023-12-04 02:47:31 25 4
gpt4 key购买 nike

我正在将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com