将XCode编译错误与部署目标iOS 5.1匹配

时间:2012-10-25 04:08:47

标签: xcode ios5 backwards-compatibility

将XCode更新为4.5后,它也更新到iOS SDK 6(我认为删除了旧的SDK)。我让旧的5.1模拟器再次安装(来自下载首选项),但有没有办法获得与部署目标(5.1)匹配的编译时错误?

现在,我可以编译对iOS6方法的调用,只是让它们在运行时在设备或模拟器上失败。

有没有办法在编译时获取错误或警告?也许从代码完成中删除新方法?

2 个答案:

答案 0 :(得分:5)

Clang不支持此类警告,因此无法在编译时生成它们。

然而,这并不意味着它不可能,因为希望Apple为几乎所有公共API添加可用性宏。因此,第三方解析器能够确定方法是否可用。例如。 AppCode可以做到这一点。它会生成如下警告:enter image description here

答案 1 :(得分:3)

不,当您的部署目标可能没有时,您有责任在运行时检查类,方法,常量和枚举的可用性。

if ([MyClass class] == nil) { }

if (![MyClass instancesRespondToSelector:@selector(foo)]) { }

if (&kSomeConstant == NULL) { }

此外,如果整个框架可能不存在,可选择(弱)链接到它。最后,使用您支持的每个操作系统版本在真实设备上进行测试。

Old versions of Xcode are available to install side by side,但是如果您使用任何iOS 6框架,类,方法等,它们将无法构建您的项目。