cocoa - 如何避免XCode框架弱链接问题?

标签 cocoa xcode macos sdk weak-linking

我正在构建一个应用程序,该应用程序利用仅限 Mac OS X 10.6 的技术,但不会放弃对 10.5 Leopard 的向后兼容性。

我这样做的方法是将 10.6 SDK 设置为基础 SDK,弱链接所有框架并将部署目标设置为 10.5,如下所述:

http://developer.apple.com/mac/library/DOCUMENTATION/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

这很好用;在进行仅限 Snow Leopard 的调用之前,我需要检查选择器或类是否确实存在。或者我可以在调用电话之前检查操作系统版本。

问题是它非常脆弱。如果我只进行一次 10.6 的调用,我就会破坏 Leopard 兼容性。因此,即使使用正常的代码代码完成功能也可能很危险。

我的问题:在进行发布构建之前,有什么方法可以检查 10.5 上未定义哪些调用?某种静态分析,甚至只是一个技巧(设置另一个 SDK 的目标?)就可以了。

我显然应该在发布任何东西之前在 Leopard 机器上进行测试,但即便如此,我也不可能在每次发布之前都遍历程序的所有路径。

如有任何建议,我们将不胜感激。

最诚挚的问候,

弗兰克

最佳答案

您可以将目标 SDK 更改为 10.5。然后,编译器将输出 warning:definition for '-snowLeopardOnlyMethod:' not find 消息。

关于cocoa - 如何避免XCode框架弱链接问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545095/

相关文章:

cocoa - NSTextView 检查栏在 Sierra 10.12 上崩溃

objective-c - Xcode 4.5 - OS X Cocoa 应用程序 - 基本 Web View : Load Google when opened

ios - 供应配置文件不包括 com.apple.security.application-groups 权利

ios - 在 Xcode 8/Swift 3 中按下 UIButton 时出现 "Unrecognized selector sent to instance"错误

XCode Developer API - 对象库 - 对象消失

objective-c - 如何让按钮仅在 TableView 有 0 行时才被禁用?

objective-c - 如何从其他类设置 NSStatusBar 标题?

swift - 替换 Storyboard 中的 ViewController,同时保留 Segues

objective-c - 属性字符串超链接未显示正确的光标

objective-c - 如何将 NSPredicateEditor/NSRuleEditor 背景设置为交替行?