ios - iOS 中的库(.a 文件)或框架,哪个是更好的选择

标签 ios frameworks .a

我在将我的项目转换为 lib 或框架以便在另一个项目中使用它并隐藏我的代码时犹豫不决。

我一直在网上寻找一些关于框架或库更好的 Material 。框架的种类很少(其中大部分不受 Apple 支持,通常需要一些“合法黑客”来构建它们,例如假框架和动态框架..)。

有人可以推荐并解释什么是更好的选择吗?框架或库(.a 文件)。

最佳答案

这开始是评论,但我用完了空间。 H2CO3 所说的一切都是正确的,但值得更详细地了解静态库的 2 种风格。将您的代码分发给其他人时,消费者需要两样东西:您的公共(public) header 和编译后的目标文件。这两种方法在传递上述内容时略有不同。

Vanilla 静态库(libMyCoolCode.a)

这些具有易于构建的优点。 Xcode 已经为您提供了一个项目模板。虽然它们并不难吃,但也不是很好。您必须提供已编译的对象存档(.a 文件),并且还必须以某种方式提供所有公共(public) header 。客户端然后必须链接到您的库手动告诉 Xcode 到哪里寻找 header 。

假框架(MyCoolCode.framework)

传统框架包含动态库。有些人已经找到了一种围绕静态库构建相同结构的方法。 .framework 只是一个具有确定性布局的目录结构。它旨在包含使用所需的所有头文件。这很容易消耗。您只需拖放,Xcode 就会自动知道在哪里可以找到标题。它的缺点是更难生产。 Xcode 没有用于此的项目模板,因此您需要在线查找有关该过程的文献并将您自己的构建脚本添加到 Xcode 以生成框架。

综上所述,您可以根据库的使用方式来决定。这是易于构建但使用起来乏味与难以构建但易于使用之间的简单权衡。

关于ios - iOS 中的库(.a 文件)或框架,哪个是更好的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17369025/

相关文章:

c++ - 如何打开 .a 文件

android - 在 Android 上运行 objective-c 静态库

c++ - 将静态库链接到其他静态库

ios - 为什么我的 ViewController 在一次调用 present(_ :animated:completion:) method?

ios - 在 iOS 13 中覆盖 traitCollection

javascript:作为对象或函数传递

ios - ... 处的 bundle 包含不允许的文件 'Frameworks'

android - 如何开发跨平台移动应用程序

ios - 以编程方式创建带帧的 UIImage 动画

ios - 有没有办法获取当前应用内用户的所有内购信息