我知道swift数组与NSarray相连。
Swift数组只能包含一种类型。
我想在swift中设置CAGradientLayer的位置。
我需要nil终止数组。
是唯一的选择: A.)创建一个带浮点数的NSArray对象,最后是否为零? B.)创建一个包含anyObject数组的swift数组,这样我可以指定nil?
我对如何处理这个问题感到有些困惑。
Swift nil!= Objective C nil
这是否意味着我不能以与客观c相同的方式终止数组?
感谢。
答案 0 :(得分:4)
这很简单:
let layer = CAGradientLayer()
let locations = [ 0.0, 1.0 ]
layer.locations = locations
请注意,Objective-C阵列不 nil-terminated。 您可能会对语法
感到困惑NSArray *locations = [NSArray arrayWithObjects: loc1, loc2, nil];
这将创建一个包含两个对象的数组。 nil
只是变量参数列表的标记,不存储在数组中。事实上,Objective-C数组根本不能存储nil
。在“现代”Objective-C中,这将被写为
NSArray *locations = @[loc1, loc2];
并转换为上面的Swift代码。