如何让我的 Objective C class 方法只对 Swift classes 可见

How to make my Objective C class method only visible for Swift classes

我有一个通用的常量文件,其中包含我所有的 objective C 宏,用于访问 swift class 中的 objective c 宏 我计划实现的方式在以下文章中建议。

Way To Access Objective C macros In Swift

基本上,建议的是创建 .h & .m 文件并添加 public 方法,return 我们想要访问的宏 too.E.g

我有一个 objective C 宏来获取自定义颜色

#define THEME_COLOR [UIColor colorWithRed:115.0/255.0 green:190.0/255.0 blue:123.0/255.0 alpha:1.0f] // this macro is not accessible inside swift class 

所以我创建了一个方法如下

+ (UIColor *) themeColor {
   return THEME_COLOR;
}

现在在我的 swift class 中,我可以访问此方法。由于上述方法是在全局 class 中声明的,因此我的所有 objective C class 也都在访问此方法。我只想在从 swift classes 访问时才允许访问此方法,有什么办法吗?或者还有其他更好的方法吗?

非常感谢任何建议或帮助。提前致谢

不要将定义 +themeColor.h 文件导入到您的 ObjC 代码中。只需将它放在 Swift.

的桥接头中

(就是说,我不会为此烦恼。我强烈建议只删除宏并在任何地方使用该方法。如果你不想删除宏,我仍然不会对 ObjC 隐藏方法。方法通常是更好的解决方案。)