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

Cocoa 如何避免XCode框架弱链接问题?,cocoa,xcode,macos,sdk,weak-linking,Cocoa,Xcode,Macos,Sdk,Weak Linking,我正在构建一个应用程序,它利用了MacOSX10.6-only技术,但没有放弃对10.5Leopard的向后兼容性 我这样做的方式是将10.6 SDK设置为基本SDK,弱链接所有框架,并将部署目标设置为10.5,如中所述: 这很好用;在调用SnowLeopard之前,我需要检查选择器或类是否确实存在。或者我可以在打电话之前检查操作系统的版本 问题是,这是难以置信的脆弱。如果我只打了一个10.6的电话,我就搞砸了Leopard兼容性。因此,即使使用普通代码完成功能也可能是危险的 我的问题:在进行

我正在构建一个应用程序,它利用了MacOSX10.6-only技术,但没有放弃对10.5Leopard的向后兼容性

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

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

问题是,这是难以置信的脆弱。如果我只打了一个10.6的电话,我就搞砸了Leopard兼容性。因此,即使使用普通代码完成功能也可能是危险的

我的问题:在进行发布构建之前,有没有办法检查10.5中没有定义的调用?某种静态分析,甚至只是一个技巧(另一个SDK设置的目标?)

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

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

致以最良好的祝愿


Frank

您可以将目标SDK更改为10.5。然后,编译器将输出“-snowLeopardOnlyMethod:”未找到的
warning:definition
消息。

谢谢,我不确定我是否理解需要设置为10.5的内容。。我已经将“基本SDK”设置为10.6,“部署目标”已经设置为10.5。而且肯定没有雪豹唯一的方法:任何地方都有警告。将基本SDK更改为10.5当然会产生很多错误,但问题是,会有很多错误和警告,这些错误和警告是由于早期代码未编译而导致的,并且编译器会在一段时间后停止生成错误,因此,即使手动查看错误消息,也可能无法捕获仅10.6 API的所有方法。我确信我遗漏了一些东西,但是where?
snowLeopardOnlyMethod:
只是一个示例方法名称(它可能是
exampleMethod:
)。我推荐阅读来了解苹果使用的术语。嗨,本尼迪克特,谢谢你的链接。我已经读完了。苹果谈论的是“部署操作系统版本”(又名MACOSX_deployment_TARGET)和“基本SDK”(又名SDKROOT)。我假设“目标SDK”是指“基本SDK”/SDKROOT。根据您链接的文档上的图2-1,将基本SDK设置为10.5意味着“不要使用这些API”“对于Mac OS X 10.6呼叫,这就是为什么我在遵循您的建议时遇到问题的原因。暂时这样做,然后将基本SDK重置为10.6会出现我在第一篇评论中提到的问题。