Swift运行时库与Swift标准库

时间:2017-04-25 22:48:34

标签: swift linker cocoapods static-libraries dynamic-library

在此tutorial on how to use CocoaPods中,我无法理解以下段落:

  

与Objective-C不同,标准的Swift运行时库不是   包含在iOS中!这意味着您的框架必须包含必要的内容   Swift运行时库。因此,使用Swift编写的pod必须   被创建为动态框架。如果Apple允许Swift静态   库,它会导致不同库中的重复符号   使用相同的标准运行时依赖项。

以下是我的问题:

  1. “标准Swift运行时库”究竟是什么? Swift Standard Library是一个这样的标准swift运行时库,我在swift中编写的框架会被认为是一个快速的运行时库吗?

  2. “Swift运行时库未包含在iOS中”究竟是什么意思?我想我无法推断出“iOS”所指的内容。

  3. 非常感谢有关本段的任何其他见解,链接,资源或解释!

    修改:

    阅读runtime library wiki article后,我不再对 Q1 感到困惑。以下段落为我澄清了这一点:

      

    不应将运行时库的概念与a混淆   像应用程序创建的普通程序库   程序员或由第三方交付,也不是动态库,   表示在运行时链接的程序库。例如,C   编程语言只需要一个最小的运行时库(通常   称为crt0),但定义了一个大型标准库(称为C标准)   库)必须由每个实现提供。

    但是我仍然对 Q2 感到困惑。

1 个答案:

答案 0 :(得分:8)

Objective C有一个稳定的(不变的)运行时库,因此有一个由OS(macOS / iOS)提供的库共享副本,可供所有需要它的应用程序使用。相比之下,Swift是一种快速发展的语言,这意味着它的运行时库在版本之间经历了巨大的变化。因此,Xcode将Swift运行时库的副本捆绑在每个应用程序的一部分中,以确保应用程序可以使用运行时库的正确版本(应用程序使用的版本)的副本。