这个问题可能很简单。
那么,如果我在新 SDK 中使用了一些新类,我是否应该假设我的应用程序只能在具有相同操作系统版本号或更高版本的 iPhone 上运行?
例如,如果我使用一个类,其文档说该类仅在 iOS 5 之后存在,我是否应该假设我的应用程序只能在装有 iOS 5 的 iPhone 上运行?
还是类文档中的术语iOS 5
仅指SDK,而不是目标部署平台?
部署目标,iOS 和 SDK 不是同一个概念,但它们是相关的。当你看到一个方法或一个类在 iOS5 中可用时,这意味着你需要在你的机器中安装一个 SDK5 才能编译它,并且用户需要在他们的设备中安装一个 iOS5 才能执行它。但是,您可以在其下方有一个部署目标(例如 iOS4),并且只需注意运行时不要执行该部分代码。
有很多关于如何做到这一点的详细信息,但简而言之:
如果它是一个方法,请在调用之前检查它是否响应该方法:[object respondToSelector:@selector(yourNewMethod)]
如果是类,请在实例化对象之前检查该类是否存在:NSClassFromString(@"YourNewClass")
. 此外,如果该类位于旧部署目标中不存在的新框架中,请记住将其链接为“弱”框架。否则启动时会失败。
当然,在这两种情况下,您都需要向用户提供替代响应。
术语 iOS 5 是指设备上的操作系统。因此,该类仅适用于 5 后的设备,直到它被弃用。