Sto provando a creare un CGPath in Swift. Sto usando CGPathCreateWithRect(rect, transformPointer)
.UnsafePointer <CGAffineTransform> da CGAffineTransform
Come posso ottenere un UnsafePointer<CGAffineTransform>
da un CGAffineTransform
? Ho provato questo:
let transform : CGAffineTransform = CGAffineTransformIdentity
let transformPointer : UnsafePointer<CGAffineTransform> = UnsafePointer(transform)
Inoltre ho provato questo:
let transform : CGAffineTransform = CGAffineTransformIdentity
let transformPointer : UnsafePointer<CGAffineTransform> = &transform
ma Swift lamenta un '&' with non-inout argument of type...
. Ho anche provato a passare &transform
direttamente in CGPathCreateWithRect
ma questo si interrompe con lo stesso errore.
Quando passo direttamente a transform
, Swift "Impossibile convertire il valore di tipo 'CGAffineTransform' nel tipo di argomento previsto 'UnsafePointer'".
Cosa sta succedendo e come è possibile farlo funzionare con Swift 2.1?
Non è necessario un puntatore * mutable * e non è necessario il cast del puntatore, quindi può essere abbreviato in 'withUnsafePointer (& transform) {CGPathCreateWithRect (CGRect(), $ 0)}'. - Sono abbastanza sicuro che CGPathCreateWithRect() * copia * i dati e non mantiene il puntatore. Altrimenti sarebbe inutilizzabile in C dove è possibile passare l'indirizzo di una matrice (locale) a quella funzione. –
Questo è vero, non ho familiarità al 100% con CGPathCreateWithRect, stavo appena uscendo dalla memoria su come gestisco i puntatori non sicuri in varie situazioni – Knight0fDragon
Perché questa è la risposta? Preferirei usare prima Martin R way, dovrebbe ottenere pieno credito per la risposta, stavo solo indicando un modo diverso per i puntatori mutabili non sicuri nel caso in cui le persone si imbattessero in quel problema – Knight0fDragon