【发布时间】:2014-07-30 18:50:52
【问题描述】:
我正在尝试在我的 Swift 项目中使用第三方 Objective-C 库。我已将库成功导入 Xcode,并创建了一个 <Project>-Bridging-Header.h 文件,允许我在 Swift 中使用我的 Objective-C 类。
我似乎遇到了一个问题:Objective-C 代码包含一个带有宏 #define AD_SIZE CGSizeMake(320, 50) 的 Constants.h 文件。将Constants.h 导入我的<Project>-Bridging-Header.h 不会导致我的Swift 应用程序可以使用的全局常量AD_SIZE。
我做了一些研究,发现 Apple 文档 here under "Complex Macros" 这么说
“在 Swift 中,您可以使用函数和泛型来实现相同的功能 结果[作为复杂的宏]没有任何妥协。因此, 不生成 C 和 Objective-C 源文件中的复杂宏 可用于您的 Swift 代码。”
读完之后,我通过在 Swift 中指定 let AD_SIZE = CGSizeMake(320, 50) 让它正常工作,但我想保持与库的兼容性,以防这些值在我不知情的情况下发生变化。
在 Swift 或我的桥接头中是否有一个简单的解决方法?如果没有,有没有办法替换Constants.h 中的#define AD_SIZE CGSizeMake(320, 50) 并保持与使用旧AD_SIZE 宏的任何现有Objective-C 应用程序向后兼容?
【问题讨论】:
-
你试过用
static CGSize代替宏吗?
标签: ios objective-c macros swift