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

时间:2015-12-26 19:58:43

标签: arrays swift unsafe-pointers

我读到了为了将一个swift变量/常量传递给一个参数,该参数期望UnsafePointer可以通过使用前缀变量/常量的'inout'(和号)符号来完成。 所以在下面的代码中,我想将'colors'数组作为“UnsafePointer”传递给函数CGGradientCreateWithColorComponents(),但是我得到了编译器错误:

“&amp; with Unsout in argument of UnsafePointer”

见视觉下方的图片。

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

感谢

enter image description here

2 个答案:

答案 0 :(得分:2)

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

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

无需处理&或其他任何事情。但是你必须实际传入一个CGFloat数组。

并且不会传递NULL nil

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

答案 1 :(得分:0)

Swift 3

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

gradientPoints.flatMap { $0.color.cgColor.components }.flatMap { $0 }