但是,在构建静态库时,所有这些对象文件都被简单地添加到一个大的归档文件中,因此扩展了静态库(。存档)。所以。文件只不过是对象的归档文件(。O)档案。可以考虑不进行压缩的 TAR 归档文件或 ZIP 归档文件。只是复制一个更容易。比一大堆。O 文件(类似于 Java,在其中打包。类文件转换为。为了便于分发而存档的 jar)。
这对 C 和 C + + 代码非常有效,因为这些语言在编译时会尽可能多地进行编译(尽管 C + + 也有一些仅限于运行时的特性)。然而,Obj-C 是一种不同的语言。Obj-C 在很大程度上依赖于运行时特性,而且许多 Obj-C 特性实际上只是运行时特性。Obj-C 类实际上具有与 C 函数或全局 C 变量相当的符号(至少在当前的 Obj-C 运行时中是这样)。链接器可以查看一个类是否被引用,因此它可以确定一个类是否正在使用。如果使用静态库中对象文件中的类,则链接器将加载此对象文件,因为链接器看到正在使用的符号。类别只是运行时特性,类别不是类或函数之类的符号,这也意味着链接器无法确定类别是否正在使用。