我打电话给getLineDash
的{{1}}:
UIBeizerPath
path.getLineDash(pattern.map{CGFloat($0)}, ...)
pattern
{我必须使用[Float]
,而不是[Float]
)Fast method to cast [Float] to [CGFloat]?之后将[CGFloat]
投放到[CGFloat]
,但它正在给我
Cannot convert value of type '[CGFloat]' to expected argument type 'UnsafeMutablePointer<CGFloat>?'
很奇怪,表演
path.setLineDash(pattern.map{CGFloat($0)}, ...
不会引发编译错误。
在this次问题之后,我添加了as UnsafeMutablePointer<CGFloat>
,但它仍然给我错误。
答案 0 :(得分:2)
我有点傻。我没有完全理解UnsafeMutablePointer
s。
基本上它们是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)