ios - 来自新 iOS 版本的方法,不给出警告,尽管使用旧的 SDK

标签 ios xcode swift deployment sdk

我有一个关于“部署目标”和 iOS 版本可用性之间区别的基本问题。例如:


在我的项目中,我使用了这行代码: method is available in iOS 8.1 and later


我的 Xcode 是这样设置项目的: Deployment target = 8.0 它也匹配特定目标下的部署信息。

当我运行这段代码时,它起作用了!但是为什么?

为什么我没有收到任何警告?

我的部署目标低于该特定线路的可用性。为什么编译器不在这里给我一个错误?我正在安装 iOS 9.1 的 iPhone 上测试代码,这是为什么?当我在模拟器上运行它时,同样的事情发生了,也是 iOS 9.1


编辑:

看完App Distribution Guide之后和 SDK Compatibility Guide ,我仍然不明白,当我的基本 SDK 设置为 iOS 8.0 时,为什么允许我运行“MKMapSize”方法,却没有收到任何警告?从目标设置 -> build设置中查看图像:

target settings -> build settings

编辑 2:

我找到了一个新方法的例子,它确实给出了我要求的错误: example of unavailable method 为什么这个方法会报错,而 8.1 方法不会报错?

编辑 3:

那么,如果我继续并将该项目上传到应用商店,该应用是否适用于运行 iOS 8.0 的用户?还是会在执行 MKMapSize(在 iOS 8.1 及更高版本中可用)时崩溃?

最佳答案

MKMapSize 根据文档添加到 iOS 4 中:

Availability Available in iOS 4.0 and later.

我也注意到鼠标悬停弹出窗口“谎言”了可用性。如果实际可用性版本低于您的部署目标,它似乎使用您的目标版本而不是代码中指定的实际可用性。

这可能是一个错误,也可能是因为 iOS 8.1 是您在计算机上安装的最早的 SDK。

关于ios - 来自新 iOS 版本的方法,不给出警告,尽管使用旧的 SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33922647/

相关文章:

ios - 无法弄清楚如何解决内存泄漏

ios - objective c iOS 文件结构困惑

ios - Xcode 项目打不开

ios - 如何向自定义表格 View 单元格 xib 文件添加约束?

ios - 在 Swift 的 Alamofire 中通过查询获取 http 请求

ios - 首次使用后无后端应用程序崩溃

ios - 迁移到Unified API后,Xamarin Mobile MediaPickerController错误

ios - 在 SwiftUI 中使用谷歌登录时来自 OIDAuthorizationService 的 NSInvalidArgumentException

ios - 如何通过 -(void) 方法更新表格 View 单元格?

ios - 如何在 iOS 中通过触摸来回移动对象