objective-c - 为 iOS 创建静态库值得吗?

标签 objective-c ios xcode static-libraries

有些代码我想包含在我的大部分项目中。诸如 AFNetworking、CoreData 类别和单元测试等。

将所有这些都包含在一个静态库中,然后在每个项目中使用它似乎是合乎逻辑的。不过我注意到,许多第三方库(如 AFNetworking 及其前身 ASIHTTP)通过复制所有源文件然后手动将必要的库链接到项目目标而包含在项目中。

在我看来,这是最简单的方法。弄清楚如何将现有静态库包含到项目中需要花费大量时间。即使在我知道怎么做之后,为每个新项目做这件事似乎仍然很痛苦。此外,您指定的 header 搜索路径指向包含静态库文件的本地目录。将静态库的文件复制到项目中不是更容易吗?有没有办法?这与像大多数库似乎已经做的那样直接包含类文件的想法是一样的,但它会更有条理,因为所有东西都将集中到一个库项目中,而不是到处都有类文件并且必须包含它们中的每一个。

静态库感觉应该是正确的方式。创建一个可用于所有项目的库,其中包含每个项目都需要的类。说得通。我只是很矛盾,因为似乎正确的方法是将所有内容都从“正式”库中删除,而只是复制所有类文件。

我想我只是在寻找经验丰富的开发人员认为最好的选择。

最佳答案

我会是第一个承认在 Xcode 中引用静态库的过程并不完全直观的人。然而,毫无疑问,使用静态库是最好的选择。

主要原因是可维护性:当你将一个库的源代码复制到很多地方时,你必须记得在升级到下一个版本的库时将它们全部更新为最新代码。这可能是一个相当容易出错的过程,尤其是当底层库源发生重大变化时(例如添加新文件、重命名旧文件等)

关于objective-c - 为 iOS 创建静态库值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319857/

相关文章:

ios - 在启用 ARC 的应用程序中未调用 Dealloc

ios - UITableViewCell 选中的按钮在滚动 UITableView 时变为未选中状态

objective-c - 如何从 Objective-C 调用带有闭包的 Swift 异步方法

objective-c - 没有像素化的 CAE 发射单元放大

xcode - 在 Interface Builder 中显示/隐藏文档大纲的键盘快捷键

ios - 从 ITableViewCell 失望?到 UITableViewCell 只解包 optionals

iphone - Instruments 说我有内存泄漏,但我没有看到它

ios - UIAlertView 取消按钮使应用程序崩溃

objective-c - 为什么我的NSArray被释放?

swift - 标题没有显示,每次我连接源和委托(delegate)时,程序都会崩溃,当我不连接它们时,它不会打印任何内容