4

假设我有一个包含十几个类和类别的自定义框架。它们都继承/扩展标准可可类。出于这个原因,我的框架在编译期间链接到 <Cocoa>。

我的问题是,如果我添加一个需要 < QuartzCore > 的类,推荐的打包方法是什么?

1)如果我只是将类添加到框架中,并导入 QuartzCore,我的框架的任何消费者也必须导入 QuartzCore。

2)如果我将类移到另一个框架中,任何消费者都必须导入我的两个框架以获得完整的功能,以及 QuartzCore。第一个框架中的任何类都不能使用第二个框架。

3)有没有办法做#ifdef #endif或类似的事情,然后弱链接QuartzCore框架,以便Cocoa标准类和QuartzCore依赖类都在一个框架中,但消费者不必添加QuartzCore他们的项目?如果理想情况下 QuartzCore 不存在,则该类/类别根本无法用于运行时。

4

1 回答 1

2

就个人而言,我会选择#1。无论如何,几乎所有重要的应用程序都应该链接到 QuartzCore。

您可以将框架弱链接到您的框架。从您链接到的框架中删除 QuartzCore,然后将参数“-weak_framework QuartzCore”添加到“其他链接器标志”。

关于弱链接的完整文档在 Xcode 中。有一个名为“Weak Linking With Apple Frameworks”的指南。

于 2012-04-11T17:01:06.467 回答