1

我有主要的应用目标。我正在移动一些代码frameworks以减少大型项目的编译时间。

默认框架类型是动态 ( BuildSettings -> Mach-O Type)。我了解使用Apple's dynamic frameworks多个应用程序的好处将使用相同的框架,并且每个应用程序的大小会更小(因为应用程序大小不包括此动态框架)。

但是如果我my own frameworks只在我的应用程序中使用,我为什么要选择dynamic frameworks.

  1. 使用动态框架源和应用程序启动时间会更长(因为它需要连接所有这些动态库,但静态库已经是应用程序可执行文件的一部分),看起来应用程序大小会更大。

  2. 应用商店的规模可能也会随着动态框架而变得更大。

如果有人可以告诉我我们可以使用哪些好处,那将会很有帮助dynamic frameworks

4

1 回答 1

1

您的评估大多是正确的。

可以不直接链接到框架,而是使用dlopen.
这既可以用于只需要许多可用库中的一个的插件系统,也可以用于延迟加载特别繁重的框架,这实际上会减少应用程序的启动时间。

我能想到的使用动态链接框架的进一步原因是:

  • 许可的原因。
  • 如果您正在开发一个封闭源代码库供其他开发人员使用,那么静态库通常比动态库具有更多嵌入的信息,并且使用静态库您可以轻松隐藏您正在使用它的事实,这两个你可能都不想要。
  • 如果您有符号冲突(例如,由于多次链接到静态库,就像 Rust 标准库的情况一样),那么您可以将不同的代码库拆分为框架以分隔命名空间。
于 2021-04-30T02:45:55.777 回答