我正在尝试在我的Swift项目中使用第三方Objective-C库。我已经将该库成功导入到Xcode中,并且已经制作了一个<Project>-Bridging-Header.h
文件,可以在Swift中使用Objective-C类。
但是,我似乎遇到了一个问题:Objective-C代码包含一个Constants.h
带有宏的文件#define AD_SIZE CGSizeMake(320, 50)
。导入Constants.h
my<Project>-Bridging-Header.h
不会导致AD_SIZE
我的Swift应用程序可以使用的全局常量。
我做了一些研究,发现“复杂宏”下面的Apple文档说:
“在Swift中,您可以使用函数和泛型来获得与复杂宏一样的结果,而无需做出任何妥协。因此,C和Objective-C源文件中的复杂宏无法用于您的Swift代码。”
阅读完这些内容后,我可以通过let AD_SIZE = CGSizeMake(320, 50)
在Swift中进行指定来使其正常工作,但是如果这些值在我不知情的情况下发生变化,我想与该库保持将来的兼容性。
在Swift或我的桥接标头中,有没有简单的解决方法?如果没有,是否有一种方法可以替换#define AD_SIZE CGSizeMake(320, 50)
inConstants.h
并保持其与使用旧AD_SIZE
宏的任何现有Objective-C应用程序向后兼容?
我通过替换解决了
#define AD_SIZE CGSizeMake(320, 50)
在图书馆的Constants.h
使用
extern CGSize const AD_SIZE;
并添加
CGSize const AD_SIZE = { .width = 320.0f, .height = 50.0f };
在库Constants.m
文件中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句