框架的可选集成代码:可选依赖项还是单独的框架?

Pau*_*ell 8 xcode frameworks ios swift carthage

我是框架X的作者,我想分发一些胶水代码,以便可选地与框架Y和Z集成.客户端应该能够使用X作为独立框架,但能够使用集成代码如果他们也使用Y和/或Z.

标题问题是:目前是否有最佳做法,以及权衡什么?详细的子问题如下.

我的具体案例:我是Siesta的作者.只需要一点点代码就可以与SwiftyJSONAlamofire集成.但是,Siesta不需要这些框架中的任何一个.

我看到两个可接受的选择:

  1. 在我的Xcode构建中将框架Y和Z配置为框架X的可选依赖项.
  2. 分配单独的框架:X核心,X + Y胶水和X + Z胶水.

备选方案1乍一看似乎很有希望.这不是确切的可选依赖项吗?但我担心因为:

  • 我没有看到广泛使用的可选依赖项.
  • 我不清楚我是否会通过这样做将客户端固定到特定版本的Y和Z.
  • 那些使用迦太基从源头构建X的人呢?看起来即使他们不使用Y或Z,他们也必须在他们的Just中包含那些框架Cartfile.private来构建X.

选项2很简单,但我担心开销.甚至一个noop框架的时钟也超过250k.在最终的应用程序中它仍然是那么糟糕吗?如果我走这条路线,是否存在我应该关注的每个框架开销?

还有其他我不知道的权衡吗?