【问题标题】:Discover calls to methods not available in earlier iOS versions发现对早期 iOS 版本中不可用的方法的调用
【发布时间】:2012-02-01 21:25:30
【问题描述】:

我正在使用 iOS 5.0 作为基础 SDK 并使用 iOS 3.0 作为部署目标来构建我的应用程序。

我知道当我使用早期 iOS 版本中不可用的功能时,我需要检查方法和类是否存在,但最近我在一个问题上浪费了几个小时才发现我正在调用一个方法在某些 iOS 版本中不可用。我根本没有注意到它是一种新方法,并且在调用它之前没有检查。该应用程序当然编译时出现 0 个错误和 0 个警告。

这是一个大问题,因为如果我在应用程序的某个地方忘记了其他检查,直到我或者最糟糕的是,某些用户会激活该特定代码部分时我才会知道。

也许我遗漏了一些东西,是否可以设置一些编译器选项来检测我对 iOS 部署目标中不可用的方法的调用?你如何处理这样的问题?

【问题讨论】:

标签: objective-c ios xcode cocoa-touch


【解决方案1】:

此链接可能会为您指明正确的方向。 Supporting mutiple ios Versions in your apps。它解释了如何在保持向后兼容性的同时利用较新的 ios 功能。希望对您有所帮助。

【讨论】:

  • 我阅读了您链接的帖子。我觉得有趣的部分是制作项目副本并为旧模拟器(使用旧 Xcode)编译它,为不支持的方法调用生成警告。这是我正在寻找的方向:一种发现对部署目标 iOS 中不可用的方法的所有调用的方法,因此我可以进行快速检查以验证我正确管理了每个方法的兼容性.当然,这种方法需要一些工作来安装和管理旧 Xcode 版本并进行测试。谢谢。
  • 我想把这个问题留到其他时间。我希望找到一种不涉及安装旧 Xcode 版本的方法,如果我对此了解得越多,它在技术上看起来就越不可能(请参阅我刚刚添加到我的问题中的评论)。
  • 链接中提到的解决方案有效。如果您想在 3.2.2 之前的 iOS 中测试您的解决方案,则需要安装较旧的 Xcode 版本。这些旧的 SDK 不再随 Xcode 提供,您必须使用其他意味着在以前版本中测试您的应用程序时获取它们。我想这是苹果的说法。请升级,你落后了。
  • 我同意,而且我认为 Apple 的这个“建议”很好。但是仅仅因为我想调试我的应用程序的某个(我认为很重要)方面而安装一个完整的旧 Xcode 版本对我来说看起来太夸张了。好吧,我尝试支持 iOS 3.0 也可能被夸大了,但我应该做同样的工作来支持 4.0。这就是为什么我不愿意关闭这个问题,我一直在想Xcode是一个如此强大(我真的不知道多少)的软件,真的不知道以前的SDK中缺少哪些方法?也许你们当中有人知道我在浪费时间,但我需要确定一下。
  • 为什么我选择这个答案:我的问题已经开放了一段时间了,我希望找到一些更实用的解决方案,但我太忙了,无法进一步调查,所以是时候关闭并选择了一个答案。 hotpaw2 的回答也不错,但由于我一直在寻找一种方法来发现对旧 SDK 中不可用的方法的调用,我认为这个方法更灵活,不需要拥有真实设备。在真实设备上进行测试当然很有用,但对于我的问题,带有旧 SDK 的 Xcode 也会在编译时发现错误的调用。
【解决方案2】:

目前,检查与早期版本 iOS 兼容性的唯一方法是在运行该版本操作系统的旧未更新设备上测试应用程序。

如果您找不到这么旧的设备,即使只是短期借用,那么将部署目标设置得那么低可能没有充分的商业理由。

【讨论】:

  • 我理解您对这么低的部署目标的评论,但我正在谈论的问题可能发生在 any 部署目标不等于基本 SDK 的情况下。而且我认为,如果我可以在真正的未更新设备上测试我的应用程序,什么都不会改变,因为我正在谈论的问题是当我碰巧执行我之前错过执行检查的代码部分来调用不可用的方法。问题是如何搜索此类错误,因为一旦我有幸执行错误代码,应用程序将在设备和模拟器中同样崩溃。谢谢。
  • 据报道,模拟器不能准确地表示仅适用于其运行的 iOS SDK 版本的 API。只有设备运行实际的 ARM OS 代码。
  • 谢谢,我读了一些文章,现在我知道你是对的。我在想真实设备/模拟器之间的主要区别在于计算能力和资源。这是个坏消息,但也是尝试找到一种可靠方法来定位对可能丢失的方法的调用的另一个原因。
猜你喜欢
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
相关资源
最近更新 更多