如何在函数中将 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
.
的数组
并且不要传入 NULL
但 nil
:
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=] }
我读到,为了将 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
.
并且不要传入 NULL
但 nil
:
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=] }