我試圖在Swift中創建CGPath。我正在使用CGPathCreateWithRect(rect, transformPointer)
。CGAffineTransform中的UnsafePointer <CGAffineTransform>
如何從CGAffineTransform
獲得UnsafePointer<CGAffineTransform>
?我已經試過這樣:
let transform : CGAffineTransform = CGAffineTransformIdentity
let transformPointer : UnsafePointer<CGAffineTransform> = UnsafePointer(transform)
我也試過這樣:
let transform : CGAffineTransform = CGAffineTransformIdentity
let transformPointer : UnsafePointer<CGAffineTransform> = &transform
但斯威夫特抱怨某個'&' with non-inout argument of type...
。我也嘗試將&transform
直接傳遞給CGPathCreateWithRect
,但是停止時出現同樣的錯誤。
當我直接傳入transform
時,Swift「無法將類型'CGAffineTransform'的值轉換爲期望的參數類型'UnsafePointer'」。
這是怎麼回事,以及如何使這個工作與斯威夫特2.1?
你不需要一個* mutable *指針,你不需要指針轉換,所以它可以縮寫爲'withUnsafePointer(&transform){CGPathCreateWithRect(CGRect(),$ 0)}'。 - 我確信CGPathCreateWithRect()*複製數據並且不保留指針。否則,它將在C中無法使用,您可以將(本地)數組的地址傳遞給該函數。 –
這是真的,我不是100%熟悉CGPathCreateWithRect,我只是在內存上關於如何處理各種情況下的不安全指針 – Knight0fDragon
爲什麼這是答案?我寧願首先使用Martin R的方式,他應該得到答案的完全讚譽,我只是指出了不安全的可變指針的一種不同的方式,以防萬一人遇到這個問題 – Knight0fDragon