2017-06-06 77 views
0

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

  • ,但它不能在 目标C框架提供。
  • 自选缺少目标C
  • 即使我 编写组不同斯威夫特和Objective C文件的,我将如何 它们映射到不同的框架,在同一项目中。
  • 作为rawValue使用非Int的枚举不能使用。
  • 元组是行不通的

我知道已经有解决这个几个问题,但没有任何满意的答复。

PS - 任何链接到一个教程或博客就太

+0

您将无法使用枚举的完整功能。 – Mozahler

+0

@Mozahler - 你是对的,更新了问题 –

回答

1

我这样做,并得到了一些意想不到的结果超级有用的:我有麻烦集成在斯威夫特应用程序的框架。 Objective-C的工作很好。 你在这里提到了一些注意事项。

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

你有关的问题的话一般都是用一个小小的例外正确:自选没有从Objective-C的缺失,它们显示为变量和方法参数nullable/nonnull修饰。虽然这不能完全取代可选项,但它有助于在流程的早期检测问题。

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

斯威夫特ErrorNSError在Objective-C使用之间的桥接。转换并不总是一帆风顺,所以最好在导出的代码中使用NSError

如果您在框架混合Objective-C和斯威夫特,你不能使用桥接报头,而是采用modulemap文件,这往往把相当大的和复杂的。

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

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

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