OSX 上的 Swift 与 iOS 版本不同吗?

Is Swift on OSX different from the iOS version?

我想获取 CALayer 的边界。

在 OSX 我必须这样做

let bounds = rootLayer?.bounds

在 iOS,这个

let bounds = rootLayer.bounds

然后将此边界分配给另一层我必须这样做

于 OSX

anotherLayer.bounds = bounds!

于 iOS

anotherLayer.bounds = bounds

为什么? swift 在 iOS 和 OSX 上有什么不同吗?那太糟糕了。

在这两种情况下,rootLayer 都是这样设置的

let rootLayer = vista.layer

Swift 语言 相同。 UI 框架和 API 不一样,这是预料之中的,因为 UI 范式不一样。

我不知道 API 你是从什么 vista 填充的。但是沿线的某个地方,您有一个 API,它在 OSX 和 iOS 上的定义略有不同。在 OSX vista.layer returns 上是可选的,在 iOS returns 上是非可选的。当你找到它的位置时,你可以纠正它,并在那里打开可选的。

最后,隐式键入在这里对您没有好处。如果您将 rootLayer 声明更改为:

let rootLayer:MyLayerTypeHere = vista.layer

如果类型作为可选类型返回,那么您将在此处收到编译时错误,因为 MyLayerTypeHereMyLayerTypeHere? 是不同的类型。