在 C、C++ 和 Objective-C 中,您可以将可执行文件的一部分编译成它自己的“目标文件”,并通过包含“头文件”从任何其他代码中使用它(和/或包含多个目标文件的库)。尽管有高度模板化的 C++ 代码,但“标头”通常只包含验证调用代码正确性所需的声明(并协助 IDE 进行自动完成等)。
但是 Swift 没有头文件。
现在,显然目前不可能制作一个 Swift 静态库,但是在未来,如果 Swift 没有标头,想要使用“新”源代码中的一些现有预编译代码,这种情况将如何工作?
它会像 [I infer] Java 必须如何工作,编译后的表单可以被内省到足以让编译器验证它是否被正确使用?除了它的中间表示之外,Bitcode 是否还提供了保留此类元数据的必要“协议”?
如果 Apple 将 Cocoa 移植到 Swift(并保持其封闭源代码),那么它将如何“导入”到 Swift 应用程序中?
虽然,实际上,这个问题与“封闭源代码”本身无关,而是试图理解Swift 中编译单元的边界。基于Go 语言的一个类似问题,我的这里可以改写为:你可以链接到没有源代码的预编译 Swift 库吗?