将XCode更新为4.5后,它也更新到iOS SDK 6(我认为删除了旧的SDK)。我让旧的5.1模拟器再次安装(来自下载首选项),但有没有办法获得与部署目标(5.1)匹配的编译时错误?
现在,我可以编译对iOS6方法的调用,只是让它们在运行时在设备或模拟器上失败。
有没有办法在编译时获取错误或警告?也许从代码完成中删除新方法?
答案 0 :(得分:5)
Clang不支持此类警告,因此无法在编译时生成它们。
然而,这并不意味着它不可能,因为希望Apple为几乎所有公共API添加可用性宏。因此,第三方解析器能够确定方法是否可用。例如。 AppCode可以做到这一点。它会生成如下警告:
答案 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框架,类,方法等,它们将无法构建您的项目。