如何有效地在iOS项目中添加iOS框架

How to add iOS framework in iOS project effectively

最近开始在 iOS 项目上工作,用 swift 和 objective-c 编写。截至目前,我们有一个单一的回购协议。现在我们专注于创建几个框架,以便我们可以在多个应用程序中重用相同的框架。我想知道您对以下几点的看法。

  1. 如果我在我的客户端应用程序项目中添加 framework.xcodeproj,我可以在编写导入语句后访问框架的 public 实体。我担心的是,每次我通过客户端应用程序项目构建时,这个 framework.xcodeproj 也在编译,尽管自上次构建以来它没有改变,也不依赖于任何其他框架。

  2. 如果我通过将框架添加为 framework.framework 并使其进入嵌入框架来添加框架,我可以访问框架的 public 实体。在这种情况下令人担忧的是,每当我更改框架代码时,我也需要更新客户端应用程序项目中的框架。

有没有什么方法可以在客户端应用程序项目中包含框架,我可以在其中访问 public 实体并且每次构建客户端应用程序项目时都不会构建它?

如果框架在其代码更新时得到构建,那绝对没问题。

我过去使用过 Visual studio,如果依赖项目中没有代码更改,我可以在不构建依赖项目的情况下构建我的客户端项目。

如果每次构建应用程序时都构建框架,则取决于框架的类型:

有 Cocoa 个 Touch 静态库和 Cocoa 个 Touch 框架。

Cocoa 触控框架

它们始终是开源的,并且将像您的应用一样构建。 (所以 Xcode 有时会编译它,当你 运行 你的应用程序并且总是在你清理项目之后。)框架只支持 iOS 8 和更新版本,但你可以使用 Swift 和 Objective-C 在框架中。

Cocoa 触摸静态库

顾名思义,它们是静态的。因此,当您将它们导入您的项目时,它们已经被编译。您可以与他人共享它们而无需向他们展示您的代码。 请注意,静态库目前不支持 Swift。 您必须在库中使用 Objective-C。应用程序本身仍然可以写成 Swift.

结论

如果您不介意使用 Objective-C,静态库似乎符合您的要求,框架应该只构建一次。

但因为我喜欢Swift,我个人会推荐你使用框架(如果你不介意使用框架的其他人可以看到你的代码)。我的经验表明,这不是什么大问题,有时会构建框架。


AddThis 写了一篇关于决定是使用静态库还是框架的好博客post。

Cocoa Touch Static Library vs. Cocoa Touch Framework