繁体   English   中英

用于Swift和Objective C项目的Swift框架

[英]Swift framework for Swift and Objective C projects

我正在建立一个新的框架。 该项目将被编码为Swift语言,但是使用此框架的客户可以自由使用swift或Objective-C框架。 问题是我该如何开始。 可能有很多问题,例如

  • 在快速代码中使用结构,但是无法在目标C框架中使用它。
  • 可选项目缺少目标c
  • 即使我为Swift和Objective C编写了不同的文件集,我如何将它们映射到同一项目下的不同框架上。
  • 不能使用Int以外的枚举作为rawValue。
  • 元组不起作用

我知道围绕此问题有几个,但没有一个令人满意的答案。

PS-任何指向教程或博客的链接也将非常有帮助

我这样做了,并且得到了一些意想不到的结果:我无法在Swift应用程序中集成框架。 Objective-C正常工作。 您在这里提到了一些注意事项。

我建议在使用所有功能的Objective-C中编写测试应用程序时,反复进行此操作。 这样,如果某些功能不能很好地跨越Swift到达Objective-C的边界,它将被尽早发现。

您对问题的评论通常是正确的,只有一个小例外:Objective-C不缺少可选项,它们在变量和方法参数上显示为nullable/nonnull修饰符。 尽管这不能完全替代可选项,但有助于在过程中及早发现问题。

这是我发现的其他一些问题的随机列表:

在Objective-C中使用Swift ErrorNSError之间的桥梁。 转换并不总是那么平滑,因此最好在导出的代码中使用NSError

如果在框架中混合使用Objective-C和Swift,则不能使用桥接头,而要使用倾向于变得非常大和复杂的modulemap文件。

由于无法将框架嵌入框架中,因此必须确保应用程序为其目标设置ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES标志。 必须在文档中明确指出。 另外,在为框架创建胖库时,必须从分布式SDK中剥离这些文件。

而且,正如我在一开始所说的那样,在Swift应用程序中使用生成的混合语言框架仍然没有成功。

希望这会添加到您开发库时要考虑的事项列表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM