我正在尝试在我的 Swift 项目中使用第三方 Objective-C 库。我已经成功地将库导入到 Xcode 中,并创建了一个
然而,我似乎遇到了一个问题:Objective-C 代码包含一个
我进行了一些研究,并看到苹果文档 这里,在“复杂宏”下面 中写道:
“在 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 应用程序的向后兼容性?”
<Project>-Bridging-Header.h
文件,使我可以在 Swift 中使用我的 Objective-C 类。然而,我似乎遇到了一个问题:Objective-C 代码包含一个
Constants.h
文件,其中包含宏 #define AD_SIZE CGSizeMake(320, 50)
。将 Constants.h
导入到我的 <Project>-Bridging-Header.h
中并没有产生一个全局常量 AD_SIZE
,供我的 Swift 应用程序使用。我进行了一些研究,并看到苹果文档 这里,在“复杂宏”下面 中写道:
“在 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
而不是宏吗? - jtbandes