如何在Swift中通过#define宏使用Objective-C代码

安库什格

我正在尝试在我的Swift项目中使用第三方Objective-C库。我已经将该库成功导入到Xcode中,并且已经制作了一个<Project>-Bridging-Header.h文件,可以在Swift中使用Objective-C类。

但是,我似乎遇到了一个问题:Objective-C代码包含一个Constants.h带有宏文件#define AD_SIZE CGSizeMake(320, 50)导入Constants.hmy<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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift中带有#define宏的Objective-C代码

来自分类Dev

如何替换SWIFT中在Objective-C中曾经使用的#define宏?

来自分类Dev

如何替换SWIFT中在Objective-C中曾经使用的#define宏?

来自分类常见问题

如何使用Swift中的Objective-C #define

来自分类Dev

如何在Swift中通过名称实例化类而不使用Objective-C运行时

来自分类Dev

如何在Objective-C宏中编写多条指令?

来自分类Dev

如何在Framework目标中从Objective-C调用Swift代码?

来自分类Dev

在Swift中实现Objective C代码

来自分类Dev

使用Swift代码的Objective C测试类

来自分类Dev

防止在Objective-C中使用宏编译代码

来自分类Dev

如何从Objective-C代码中调用javascript代码?

来自分类Dev

Objective-C:如何定义宏以从pod依赖项中禁用一段源代码?

来自分类Dev

C / C ++宏重复代码

来自分类Dev

如何在C代码或C ++代码中显示此类文本?

来自分类Dev

通过引用Objective-C代码构建Swift框架

来自分类Dev

通过C代码使用ssh

来自分类Dev

如何使用C#中的C ++代码?

来自分类Dev

如何压缩C ++代码?

来自分类Dev

C 代码是如何运行的?

来自分类Dev

如何在WPF中通过c#代码编写逐字XAML代码?

来自分类Dev

如何在 DPDK 代码中解释这个 C 代码

来自分类Dev

#if语句在C ++代码中

来自分类Dev

C ++中的代码缩写

来自分类Dev

#if语句在C ++代码中

来自分类Dev

将我的Objective-C代码转换为Swift代码

来自分类Dev

这个Objective-c代码的等效Swift代码是什么?

来自分类Dev

从C代码使用bc

来自分类Dev

如何从C ++代码访问$(SolutionDir)宏

来自分类Dev

如何从C ++代码访问$(SolutionDir)宏