all*_*nli 6 frameworks launch-time ios dynamic-frameworks static-framework
iOS 是否失去了使用动态框架的大部分优势?
由于 iOS 会将所需的所有动态框架复制到应用程序包中,因此它不会在应用程序之间共享动态框架并节省内存。除了与主应用程序及其扩展程序共享内存。
使用的应用程序dlOpen无法发送到 App Store。这意味着 Apple 禁止正式使用动态框架。
旧的 Apple 文件说动态框架可以节省应用程序启动时间,但新文件说它们没有。旧文件是否过时?这是比较:
这是否意味着如果我们使用动态框架dlOpen稍后加载它们,它会比静态框架更快?因为动态框架在开始时需要一些时间来链接,但它们在加载到内存中节省了更多时间。静态框架的加载时间大于动态框架的链接时间。真的吗?
所以看起来在 iOS 上使用动态框架没有任何好处,对吧?
在 macOS 和 Linux 上呢?动态框架有什么优势吗?如果是这样,它们是如何工作的?
你在这一切中都是正确的。非系统(即不是由 Apple 提供)动态库在 iOS 上的几乎所有方面的效率都会降低。它们不会为您节省空间或内存,并且会在启动时花费您。
您引用的旧Apple 文档几乎完全是在 iPhone 出现之前编写的。它指的是 Mac 应用程序中的延迟加载库,这有助于缩短启动时间。
在具有共享库的系统上(或在使用系统库时,在 iOS 上共享),动态库节省磁盘空间,并且可以在节省内存和加载时间的进程之间共享(因为它已经被一些其他进程加载了)。但是,如果您不共享库,您将无法真正获得任何这些好处。在允许运行时加载库的系统(不是 iOS)上,动态库可以延迟加载很少使用的代码的成本,可能是无限期的(如果代码从未使用过)。此外,它还为插件和其他扩展提供了机会。
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |