苹果更新OS X时,最新的XCode 4.4会转储旧版本(10.6)SDK,我发现自己需要使用10.7 SDK(或10.8我想),并将我的部署目标设置为10.6以保持兼容性.
我更喜欢链接到旧的SDK,因为我知道我不能错误地介绍对尚不存在的API的调用.当我上次尝试逆向的方法时,我发现自己在做定期的事情.
我发现自己在做的是,我使用XCode中的代码完成功能为NSWorkspace这样的简单类选择“正确”调用,那么在开发过程中,一切都可以正常运行,我忘了它,当我发布一个新版本时:Kaboum!整个应用程序在早期的OS X版本上运行时爆炸;经常在那些难以到达的地方:-)
或者至少这是几年前的情况.
当然,现在有一种办法:
>确保您不会在部署目标中引入尚未提供的API调用,即使它们是在SDK中定义的
>在构建或静态分析时间期间检测此类呼叫
我相信我错过了一些东西,沿线的某个地方..请启发我!
最好的祝福,
坦率
解决方法
Surely,by Now there’s a way to either:
making sure you don’t introduce API calls that are not yet available
in your deployment target even if though they are defined in the SDKdetecting such calls during build or static analysis time
不,那里没有.是的,你应该打开一个雷达(bugreport.apple.com).如果你喜欢,你可以欺骗我:rdar://11985733
是的,唯一可行的解决方案,尽管苹果的建议,是复制旧的SDK和链接.
在WWDC 2012上,我花了很多时间与Xcode团队谈论这个问题.他们认为这是坏的.目前还没有解决这个问题的计划.升级雷达是我们如何影响苹果对这些事情.