【问题标题】:Match XCode compile errors to deployment target iOS 5.1将 XCode 编译错误与部署目标 iOS 5.1 匹配
【发布时间】:2012-10-25 04:08:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: xcode ios5 backwards-compatibility


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      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 框架、类、方法等,他们将无法构建您的项目。

      【讨论】:

      • 所以我必须安装旧的 XCodes?不能只将 iOS 5.1 SDK 安装到当前的 XCode 中?
      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多