构建需要 Apple 框架的自定义框架的 Cocoa 最佳实践

标签 cocoa mac-frameworks

假设我有一个包含十几个类和类别的自定义框架。它们都继承/扩展了标准 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/

相关文章:

macos - 如何在 go 中使用 macOS/OS X 框架

xcode - 为什么我的 xcode 项目中的 Frameworks/MyFramework.framework/是空的?

cocoa - Qt4 与 Cocoa 的比较

macos - 检测 Mac OS X 上是否按下 Return/Enter 键

objective-c - NSMenuItem 未启用?

php - SSCrypto 和 PHP

objective-c - 在 Cocoa 中解码整数和其他掩码

objective-c - 如何在 OS X 10.6 上构建可在 10.5 上运行的应用程序和框架?