【发布时间】:2011-11-14 00:00:56
【问题描述】:
我想分发框架 A。框架 A 依赖于框架 B。我希望我的框架的用户只需要包含框架 A,但仍然可以通过编程方式访问框架 B。
Apple 一直使用“Umbrella Frameworks”的概念来做这件事,但是文档中有这个主题:
不要创建伞式框架
虽然可以使用 Xcode 创建伞式框架,但 所以对于大多数开发人员来说是不必要的,不推荐使用。苹果 使用伞式框架来掩饰它们之间的一些相互依赖关系 操作系统中的库。在几乎所有情况下,您都应该 能够将您的代码包含在单个标准框架包中。 或者,如果您的代码足够模块化,您可以创建 多个框架,但在这种情况下, 模块将是最小的或不存在的,不应保证 为他们制作一把雨伞。
为什么不鼓励这种方法?是什么让它成为 Apple 的框架相互依赖问题的一个很好的解决方案,而不是我的?
【问题讨论】:
-
我也想知道这个。当框架和项目的数量增加时,使用 git 存储库、依赖项目中的符号链接、框架/标题搜索路径以及所有有趣的东西设置自动构建可能会变得相当麻木。
-
您在没有证据的情况下假设伞形框架是“解决 Apple 问题的好方法”。我不知情的看法是相反的情况:将 iOS 与旧的 OSX 或新版本的 OSX 与旧版本进行比较,我看到诸如 CoreGraphics 之类的框架将 从伞形框架中移出 到独立框架中。我认为“雨伞”的想法是缓解 Cocoa 成长之痛的一个不错的组合,但绝不是“解决苹果问题的好方法”;也许他们是在警告你不要让自己陷入同样的困境。
-
我投票结束这个问题,因为这个话题太老了。目前,iOS SDK 8.0 及以上版本,提供动态框架和快捷语法。所以,这个问题不再有用了。
标签: objective-c macos cocoa