0
我使用UIBezierPath以下擴展名:UnsafeMutablePointer使用3
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
}
}
這是從網站:
然而,這打破了斯威夫特3對於以下行:
let elementsPointer = UnsafeMutablePointer<[PathElement]>(userInfo)
顯示
以下錯誤:
Cannot invade initializer for type 'UnsafeMutablePointer<[PathElement]>' with an argument list of type '(UnsafeMutableRawPointer?)'
我明白,這是關係到改變斯威夫特3:UnsafeRawPointerMigration
不過,我不太清楚最好的方式將此移植到Swift 3.您將能夠在這方面提供一些幫助,爲上述擴展更新代碼?
在斯威夫特4,以'elementsPointer'不會編譯開始尾隨關閉;錯誤是「無法推斷複雜的封閉返回類型;添加顯式類型以消除歧義」。 Xcode建議添加這個註釋:'elementsPointer - > @lvalue [Path Element]'但採取這個建議只會導致更多的錯誤。任何提示? –