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