-2

我知道 swift 数组连接到 NSarray。

Swift 数组只能包含一种类型。

我想快速设置 CAGradientLayer 的位置。

我需要 nil 终止数组。

唯一的选择是:A.) 最后创建一个带有浮点数和 nil 的 NSArray 对象吗?B.) 创建一个包含 anyObjects 数组的 swift 数组,以便我可以指定 nil?

我对如何解决这个问题有点困惑。

Swift nil != Objective C nil

那么这是否意味着我不能以与目标 c 相同的方式终止数组?

谢谢。

4

1 回答 1

4

这很简单:

let layer = CAGradientLayer()
let locations = [ 0.0, 1.0 ]
layer.locations = locations

请注意,Objective-C 数组不是零终止的。您可能对语法感到困惑

NSArray *locations = [NSArray arrayWithObjects: loc1, loc2, nil];

这将创建一个包含两个对象的数组。nil只是变量参数列表的哨兵,不存储在数组中。事实上,Objective-C 数组根本无法存储nil。在“现代”Objective-C 中,这将被写为

NSArray *locations = @[loc1, loc2];

这转化为上面的 Swift 代码。

于 2014-07-08T17:13:12.563 回答