我留下了原文,所以人们可以理解评论的上下文。希望这个例子能更好地帮助解释我所追求的。
我可以在 Obj-C 中创建一个具有文件范围可见性的类吗?
例如,我在 NSNotificationCenter 上编写了一个method-sqizzling 类别,它会在解除分配时自动删除任何观察者。
我在实现中使用了一个辅助类,为了防止名称冲突,我设计了一个命名方案。类别为 NSNotificationCenter (WJHAutoRemoval),因此在此代码中使用的私有帮助器类被命名为...
WJH_NSNotification_WJHAutoRemoval__Private__BlockObserver
这是一口,目前我只是这样做......
#define BlockObserver WJH_NSNotification_WJHAutoRemoval__Private__BlockObserver
只需在代码中使用 BlockObserver。
但是,我不喜欢这种解决方案。
我想告诉编译器,“嘿,这个类被命名为 Bar。我的代码将作为 Bar 访问它,但我真的是唯一需要知道的人。你自己生成一个时髦的名字,或者更好的是,不要甚至导出符号,因为我是唯一应该关心的人。”
对于纯 C,我会是“静态”,而对于 C++,我会是“命名空间 { }”
在 Obj-C 中执行此操作的首选/最佳/唯一方法是什么?
原始问题
我想在另一个实现中使用一个辅助类。但是,我不想要外部链接。现在,我只是让帮助类名称非常独特,这样我就不会得到重复的链接器符号。
我可以使用静态 C 函数,但我想编写一个辅助类,链接器仅在编译单元内可见。
例如,我想在多个 .m 文件中包含以下内容,每个“Helper”对该文件都是唯一的,并且没有其他编译单元具有链接器访问权限。如果我在 10 个不同的文件中有这个,我将有 10 个单独的类。
@interface Helper : NSObject
...
@end
@implementation Helper : NSObject
...
@end
我什至在任何地方都找不到这方面的提示,而且我在接口/实现前面加上“静态”的微弱尝试都出现了错误。
谢谢!