直到iOS7,由于安全问题,Apple不支持动态链接。通常依赖于静态库之间的代码重用,这是作为应用程序可执行文件的一部分构建的。

在iOS8中引入扩展似乎有点改变,因为扩展是单独的可执行文件。扩展和其包含应用程序之间的共享代码是通过框架完成的。 Apple在其发行说明中说出来:

ios的框架。 iOS开发人员现在可以创建 dynamic 框架。 框架是用于封装的代码和资源集合 多个项目有价值的功能。构架 与扩展完美,共享可以用两者使用的逻辑 主要应用程序和捆绑扩展。

重点是我的。

源: https://developer.apple.com/library/content/documentation/xcode/conceptual/whatsnewxcode-archive/articles/xcode_6_0.html#//apple_ref/doc/uid/tp40014509-sw14

此外,在扩展开发指南中,他们解释说,您可以通过“嵌入式框架”在扩展和包含应用程序之间共享代码。

源: https://developer.apple.com/library/content/documentation/general/conceptual/extensibilitypg/extensionscenarios.html#//apple_ref/doc/uid/tp40014214-ch21-sw1

我的问题是 - 什么是嵌入式框架,它与动态框架有何不同,我们真的会看到IOS8中正确的动态链接吗?我读过的所有文档都似乎含糊不清。

有帮助吗?

解决方案

“嵌入式”和“动态”框架不参考框架的同一方面。它们并不彼此相反。首先,让我们定义一个框架:在Apple Lingo中,框架是指一些编译的代码+所述代码的公共标题。

    现在,动态框架是一个框架,其代码是一个动态库的构建。它与“静态”框架相反,其中代码将作为静态库构建。如果你想知道,维基百科有一个非常好的解释静态和动态库之间有什么区别。

  • 最后,嵌入式框架是一个框架,该框架是在应用程序中打包,而不是在“/ system / library / frameworks”中安装的系统范围内。

其他提示

嵌入式框架只是应用程序包中包含的框架,而不是在系统目录中安装的全局框架。

动态框架并不意味着动态链接框架。应用程序仍然在沙箱环境中工作。它不像您的自定义框架将与iOS一起安装。您的每一个应用程序,使用您开发的常见框架将在每个应用程序的捆绑中复制。

你可以自己看到这个。转到您的Xcode的派生数据目录并在应用程序的数据中,您将找到复制的所有嵌入式框架。

与静态库相比,使用iOS 8创建框架的新事物是公共标题文件和资产在框架内捆绑在一起。如果您已经使用了早期版本的Xcode进行了这种方式,您将记住提供公共标题的痛苦,然后在Xcode设置中添加搜索路径,以及我们必须通过单独的捆绑包。

使用我看到的框架的缺点是现在我们不能简单地使用 lipo 为所有类型的架构生成胖静态库。

imo苹果正在使用“动态”这个词来建议'独立'。

手表wwdc2014 - 建立现代框架了解更多细节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top