假设我有一个包含十几个类和类别的自定义框架。它们都继承/扩展了标准 cocoa 类。因此,我的框架在编译期间链接到
我的问题是,如果我添加一个需要
1) 如果我只是将类添加到框架中,并导入 QuartzCore,则框架的任何使用者也必须导入 QuartzCore。
2) 如果我将类移动到另一个框架中,任何使用者都必须导入我的框架以及 QuartzCore 才能获得完整的功能。第一个框架中的类不能使用第二个框架。
3) 有没有办法做 #ifdef#endif 或类似的事情,然后弱链接 QuartzCore 框架,以便 Cocoa 标准类和 QuartzCore 依赖类都在一个框架中,但消费者没有将 QuartzCore 添加到他们的项目中?如果理想情况下 QuartzCore 不存在,则类/类别根本无法供运行时使用。
最佳答案
就我个人而言,我会选择#1。无论如何,几乎任何重要的应用程序都应该链接到 QuartzCore。
您可以将框架弱链接到您的框架。从您链接到的框架中删除 QuartzCore,然后将参数“-weak_framework QuartzCore”添加到“其他链接器标志”。
有关弱链接的完整文档位于 Xcode 中。有一个名为“Apple Frameworks 的弱链接”的指南。
关于构建需要 Apple 框架的自定义框架的 Cocoa 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935080/