【发布时间】:2016-10-03 05:42:33
【问题描述】:
我正在为 UIBezierPath 使用以下扩展:
extension UIBezierPath {
var elements: [PathElement] {
var pathElements = [PathElement]()
withUnsafeMutablePointer(&pathElements) { elementsPointer in
CGPathApply(CGPath, elementsPointer) { (userInfo, nextElementPointer) in
let nextElement = PathElement(element: nextElementPointer.memory)
let elementsPointer = UnsafeMutablePointer<[PathElement]>(userInfo)
elementsPointer.memory.append(nextElement)
}
}
return pathElements
}
}
这是来自网站:
但是,以下行与 Swift 3 不同:
let elementsPointer = UnsafeMutablePointer<[PathElement]>(userInfo)
显示以下错误:
Cannot invade initializer for type 'UnsafeMutablePointer<[PathElement]>' with an argument list of type '(UnsafeMutableRawPointer?)'
我了解这与 Swift 3 中的更改有关:UnsafeRawPointerMigration
但是,我不太确定将其移植到 Swift 3 的最佳方式。您能否通过上述扩展的更新代码在这方面提供一些帮助?
【问题讨论】:
标签: uibezierpath initializer unsafemutablepointer