xcode – Mac SDK:使用最新的SDK,但确保与早期部署目标的向后兼容性

苹果更新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 SDK

  • detecting such calls during build or static analysis time

不,那里没有.是的,你应该打开一个雷达(bugreport.apple.com).如果你喜欢,你可以欺骗我:rdar://11985733

是的,唯一可行的解​​决方案,尽管苹果的建议,是复制旧的SDK和链接.

在WWDC 2012上,我花了很多时间与Xcode团队谈论这个问题.他们认为这是坏的.目前还没有解决这个问题的计划.升级雷达是我们如何影响苹果对这些事情.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...