如何在函数中将 swift 数组作为 UnsafePointer<T> 参数传递

how to pass a swift Array as UnsafePointer<T> argument in a function

我读到,为了将 swift variable/constant 传递给需要 UnsafePointer 的参数,可以使用 'inout'(与号)符号作为前缀 variable/constant. 所以在下面的代码中,我想将 'colors' 数组作为“UnsafePointer”传递给函数 CGGradientCreateWithColorComponents(),但是我得到一个编译器错误:

"& 与 UnsafePointer 类型的非输入参数一起使用"

视觉效果见下图。

所以,问题是,如何将 swift 数组 'colors' 转换为 UnsafePointer?

谢谢

将颜色类型明确更改为 [CGFloat]:

var colors : [CGFloat] = [0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0]

无需处理 & 或任何事情。但是你实际上必须传入一个 CGFloat.

的数组

并且不要传入 NULLnil:

let gradient = CGGradientCreateWithColorComponents(baseSpace, colors, nil, 2)

Swift 3

struct GradientPoint {
  var location: CGFloat
  var color: UIColor
}

gradientPoints.flatMap { [=10=].color.cgColor.components }.flatMap { [=10=] }