Appole doc

它指出:

如果您要构建自己的静态库并使用Shell脚本来
将其打包到.framework目录中,您需要迁移到构建
而是带有动态库的框架,因为这是正确的方法
建立一个框架。静态框架不是受支持的方式
共享静态库。

为什么苹果不允许在框架中使用静态库?

这是post的收缩吗?
还是那个帖子混淆了static librarystatic framework

iOS中的所有框架都是动态的,对吗?
苹果说:

框架是分层目录,其中封装了动态库,标头
文件和资源,例如情节提要,图像文件和本地化
字符串,放入一个包中。使用框架的应用需要嵌入
应用程序捆绑包中的框架。

最佳答案

启动应用程序时必须加载静态库,而无需考虑是否需要立即加载。另一方面,仅在需要时才加载动态库,因此可以改善应用程序的启动时间并降低手机的存储压力。

例如,考虑使用一个电子商务应用程序,该应用程序还可以扫描条形码并提供有关产品的详细信息。现在,当我启动该应用程序时,我将不再需要条形码功能。我需要先进入应用程序并开始购物。当我需要扫描一些条形码时,我很乐意等待,然后让框架加载,但不在应用程序启动时加载。

苹果在其文档中是这样说的:

决定应用程序性能的两个重要因素是它们的启动时间和它们的内存占用量。减小应用程序可执行文件的大小,并在启动后最大程度地减少其内存使用量,从而使应用程序启动速度更快,并在启动后使用较少的内存。使用动态库而不是静态库可以减小应用程序的可执行文件大小。它们还允许应用仅在需要时(而不是在启动时)延迟使用特殊功能加载库。此功能进一步有助于缩短启动时间和有效使用内存。

文档链接:https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/OverviewOfDynamicLibraries.html

关于ios - 为什么Apple不允许在框架中使用静态库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53292959/

10-14 23:30