2

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

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

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

4

2 回答 2

5

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

但是,这并不意味着不可能,因为希望 Apple 将可用性宏添加到几乎每个公共 API 中。因此,第 3 方解析器能够确定方法是否可用。例如AppCode可以做到这一点。它会产生这样的警告:在此处输入图像描述

于 2012-11-02T18:22:55.527 回答
3

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

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

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

if (&kSomeConstant == NULL) { }

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

旧版本的 Xcode 可以并排安装,但如果您使用任何 iOS 6 框架、类、方法等,它们将无法构建您的项目。

于 2012-10-29T12:22:57.600 回答