【问题标题】:How to make my Objective C class method only visible for Swift classes如何使我的 Objective C 类方法只对 Swift 类可见
【发布时间】:2018-02-05 16:58:36
【问题描述】:

我有一个公共常量文件,其中包含我所有的目标 C 宏,为了在 swift 类中访问我的目标 c 宏,我计划实现以下文章中建议的方式。

Way To Access Objective C macros In Swift

基本上,建议是创建 .h 和 .m 文件并添加公共方法,这些方法也返回我们想要访问的宏。例如

我有一个客观的 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 课程中,我可以访问此方法。由于上述方法是在全局类中声明的,因此我所有的目标 C 类也都在访问此方法。我只想在从 swift 类访问此方法时才授予对它的访问权限,有什么办法吗?还是有其他更好的方法可用?

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

【问题讨论】:

    标签: objective-c swift macros access-specifier


    【解决方案1】:

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

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

    【讨论】:

    • 你的回答成功了!谢谢,@Rob Napier。我正在处理已经开发的项目,它有几个宏,在旅途中转换每件事都是耗时的工作。有几个人在这个代码库中工作,所以如果没有限制它会使代码在一段时间内变得笨拙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2011-05-10
    • 2015-03-28
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多