4

Swift 编程语言指南对#availability check 中的最后一个参数有这样的说法:

if #available(iOS 9, OSX 10.10, *) {
    // Use iOS 9 APIs on iOS, and use OS X v10.10 APIs on OS X
} else {
    // Fall back to earlier iOS and OS X APIs
}

最后一个参数 * 是必需的,它指定在任何其他平台上,if 的主体在您的目标指定的最小部署目标上执行。

摘自:Apple Inc. “Swift 编程语言 (Swift 2.1)。” 电子书。https://itun.es/us/jEUH0.l

我认为我没有正确理解这一点 - 如果我打算只在 iOS 9 中执行代码并且我的最低部署目标是 8,那么在其他平台上运行时我的应用程序不会崩溃并且代码在最低部署目标上执行?

4

1 回答 1

4

最后一个参数*并不表示主体在其他 版本的 iOS 或 OS X 上执行,例如 iOS 8。

它表示主体在其他平台(如 watchOS 或 tvOS)上的最小部署目标上执行。目前已知的平台列在Swift 文档的“属性”中的“声明属性”下:

    iOS
    iOS应用扩展
    操作系统
    OSXApplicationExtension
    手表操作系统
    watchOSApplicationExtension
    电视操作系统
    tvOSApplicationExtension

最后一个参数*是处理所有未明确列出的平台以及未来平台所必需的。在你的例子中,

if #available(iOS 9, OSX 10.10, *) {

} 

块执行

  • 在 iOS >= 9 上,在 iOS 平台上运行时,
  • 在 OS X >= 10.10 上,在 OS X 平台上运行时,
  • 在任何其他平台(例如 watchOS)上运行时在相应的最小部署目标上。
于 2015-11-24T20:46:36.467 回答