iOS 是否失去了使用动态框架的大部分优势?
Does iOS lost most of the advantage of using dynamic frameworks?
是否iOS失去了使用动态框架的大部分优势?
由于iOS会将所有需要的动态框架复制到app bundle中,它不会在应用程序之间共享动态框架并节省内存。除了与主应用程序及其扩展共享内存。
使用 dlOpen
的应用无法发布到 App Store。这意味着Apple不允许正式使用动态框架。
旧的 Apple 文档说动态框架可以节省应用程序启动时间,但新文档说它们不能。旧文件是否过时?
这是比较:
是不是说如果我们用dlOpen
的动态框架以后再加载,会比静态框架快?因为动态框架一开始需要一些时间到link,但它们在加载到内存中节省了更多时间。静态框架的加载时间比动态框架的 linking 时间长。是真的吗?
所以看起来 none 在 iOS 上使用动态框架有优势,对吗?
在 macOS 和 Linux 上怎么样?动态框架有什么优势吗?如果是,它们是如何工作的?
你说的都是对的。在 iOS 上,非系统(即 Apple 不提供)动态库在几乎所有方面的效率都会降低。它们不会为您提供 space 或内存节省,并且会在启动时花费您。
旧的Apple document you reference几乎全部写在iPhone之前。它指的是 Mac 应用程序中的延迟加载库,这有助于缩短启动时间。
在具有 共享 库的系统上(或使用在 iOS 上共享的系统库时),动态库保存磁盘 space,并且可以在节省内存和加载时间的进程之间共享(因为它已经被其他进程加载)。但是,如果您不共享图书馆,您将无法真正获得任何这些好处。在允许运行时加载库的系统上(不是 iOS),动态库可以延迟加载很少使用的代码的成本,可能无限期地(如果代码从未使用过)。此外,它为插件和其他扩展打开了机会。
是否iOS失去了使用动态框架的大部分优势?
由于iOS会将所有需要的动态框架复制到app bundle中,它不会在应用程序之间共享动态框架并节省内存。除了与主应用程序及其扩展共享内存。
使用
dlOpen
的应用无法发布到 App Store。这意味着Apple不允许正式使用动态框架。旧的 Apple 文档说动态框架可以节省应用程序启动时间,但新文档说它们不能。旧文件是否过时? 这是比较:
是不是说如果我们用dlOpen
的动态框架以后再加载,会比静态框架快?因为动态框架一开始需要一些时间到link,但它们在加载到内存中节省了更多时间。静态框架的加载时间比动态框架的 linking 时间长。是真的吗?
所以看起来 none 在 iOS 上使用动态框架有优势,对吗?
在 macOS 和 Linux 上怎么样?动态框架有什么优势吗?如果是,它们是如何工作的?
你说的都是对的。在 iOS 上,非系统(即 Apple 不提供)动态库在几乎所有方面的效率都会降低。它们不会为您提供 space 或内存节省,并且会在启动时花费您。
旧的Apple document you reference几乎全部写在iPhone之前。它指的是 Mac 应用程序中的延迟加载库,这有助于缩短启动时间。
在具有 共享 库的系统上(或使用在 iOS 上共享的系统库时),动态库保存磁盘 space,并且可以在节省内存和加载时间的进程之间共享(因为它已经被其他进程加载)。但是,如果您不共享图书馆,您将无法真正获得任何这些好处。在允许运行时加载库的系统上(不是 iOS),动态库可以延迟加载很少使用的代码的成本,可能无限期地(如果代码从未使用过)。此外,它为插件和其他扩展打开了机会。