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

all*_*nli 6 frameworks launch-time ios dynamic-frameworks static-framework

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

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

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

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

Rob*_*ier 5

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

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

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