0

getLineDashUIBeizerPath这个打电话:

path.getLineDash(pattern.map{CGFloat($0)}, ...)

遵循快速方法将 [Float] 转换为 [CGFloat]pattern[Float](而且我必须使用[Float],而不是)在哪里?投给它,但它给了我[CGFloat][CGFloat]

Cannot convert value of type '[CGFloat]' to expected argument type 'UnsafeMutablePointer<CGFloat>?'

奇怪的是,表演

path.setLineDash(pattern.map{CGFloat($0)}, ...

不会引发编译错误。

这个问题之后,我补充说,as UnsafeMutablePointer<CGFloat>但它仍然给我错误。

4

1 回答 1

2

我有点傻。我没有完全理解UnsafeMutablePointers。

基本上它们是inout参数,因此它们需要&在函数调用之前使用与号 ( )。另外,因为它是 inout,所以我必须将一个变量传递[CGFloat]给它。

此代码有效:

var pat = pattern.map{CGFloat($0)}
var cou = count
var phas = phase.map{CGFloat($0)}
path.getLineDash(&pat, count: &cou, phase: &phas)
于 2017-04-16T06:23:34.390 回答