7

iOS 是否失去了使用动态框架的大部分优势?

这是否意味着如果我们使用动态框架dlOpen稍后加载它们,它会比静态框架更快?因为动态框架在开始时需要一些时间来链接,但它们在加载到内存时会节省更多时间。静态框架的加载时间比动态框架的链接时间长。真的吗?

所以看起来在 iOS 上使用动态框架没有任何优势,对吧?

那么在 macOS 和 Linux 上呢?动态框架有什么优势吗?如果是这样,它们是如何工作的?

4

1 回答 1

6

你在这一切都是正确的。非系统(即不是由 Apple 提供)动态库在 iOS 上几乎所有方面的效率都会降低。它们不会为您节省空间或内存,而且它们会在启动时花费您。

您引用的旧Apple 文档几乎完全是在 iPhone 之前编写的。它指的是 Mac 应用程序中的延迟加载库,这有助于启动时间。

在具有共享库的系统上(或使用在 iOS 上共享的系统库时),动态库可以节省磁盘空间,并且可以在进程之间共享,从而节省内存和加载时间(因为它已经被其他进程加载)。但是,如果您不共享库,您将无法真正获得这些好处。在允许运行时加载库的系统(不是 iOS)上,动态库可以延迟加载很少使用的代码的成本,可能无限期地延迟(如果代码从未使用过)。此外,它为插件和其他扩展提供了机会。

于 2019-09-15T14:15:07.687 回答