Próbuję utworzyć ścieżkę CGPath w Swift. Używam CGPathCreateWithRect(rect, transformPointer)
.UnsafePointer <CGAffineTransform> z CGAffineTransform
Jak uzyskać UnsafePointer<CGAffineTransform>
od CGAffineTransform
? Próbowałem to:
let transform : CGAffineTransform = CGAffineTransformIdentity
let transformPointer : UnsafePointer<CGAffineTransform> = UnsafePointer(transform)
Próbowałem też tak:
let transform : CGAffineTransform = CGAffineTransformIdentity
let transformPointer : UnsafePointer<CGAffineTransform> = &transform
ale Swift narzeka na '&' with non-inout argument of type...
. Próbowałem również przekazać &transform
bezpośrednio do CGPathCreateWithRect
, ale zatrzymuje się z tym samym błędem.
Kiedy przechodzę bezpośrednio pod transform
, Swift "Nie można przekonwertować wartości typu" CGAffineTransform "na oczekiwany typ argumentu" UnsafePointer "".
Co się dzieje i jak można to usprawnić za pomocą Swift 2.1?
Nie potrzebujesz * zmiennego * wskaźnika i nie potrzebujesz rzucania wskaźnika, więc można go skrócić do 'withUnsafePointer (& transform) {CGPathCreateWithRect (CGRect(), 0 $)}'. - Jestem dość pewny, że CGPathCreateWithRect() * kopiuje * dane i nie utrzymuje wskaźnika. W przeciwnym razie byłaby niezdatna do użytku w C, gdzie możesz przekazać adres tablicy (lokalnej) do tej funkcji. –
To prawda, nie jestem w 100% zaznajomiony z CGPathCreateWithRect, właśnie wychodziłem z pamięci o tym, jak radzę sobie z niebezpiecznymi wskaźnikami w różnych sytuacjach. – Knight0fDragon
Dlaczego to jest odpowiedź? Wolałbym najpierw użyć drogi Martin'a R, powinien dostać pełny kredyt za odpowiedź, po prostu wskazałem inny sposób na niebezpieczne, zmienne wskaźniki na wypadek, gdyby ludzie natknęli się na ten problem – Knight0fDragon