我假定你知道這種用法:
let cAndL: [(NSColor, CGFloat)] = [(NSColor.redColor(), 0.0), (NSColor.greenColor(), 1.0)]
let gradient = NSGradient(colorsAndLocations: cAndL[0], cAndL[1])
不幸的是,雨燕並沒有爲我們提供一種方式讓陣列來可變參數的功能。
而第二部分。如果某些API聲明UnsafePointer<T>
作爲數組,則可以創建一個T的Swift數組,並將其直接傳遞給API。
let colors = [NSColor.redColor(), NSColor.greenColor()]
let locations: [CGFloat] = [0.0, 1.0]
let gradient2 = NSGradient(colors: colors, atLocations: locations, colorSpace: NSColorSpace.genericRGBColorSpace())
如果你想使用的(NSColor
,CGFloat
)的Array
,你可以寫這樣的事情:
let gradient3 = NSGradient(colors: cAndL.map{$0.0}, atLocations: cAndL.map{$0.1}, colorSpace: NSColorSpace.genericRGBColorSpace())
_「你可以創建T的斯威夫特陣列,並將其直接傳遞到API「_這是保證安全嗎? –
@BenLeggiero,當然。查看[本文檔]的常量指針部分(https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-ID23) )。 – OOPer