Swift: CGPathRelease und ARC

8

Gerade aktualisiert auf Xcode Beta 4 und bemerkte den folgenden Compilerfehler mit meinem Code unten:

%Vor%
  

'CGPathRelease' ist nicht verfügbar: Core Foundation-Objekte sind   automatisch Speicherverwaltung

Also entferne ich einfach nur meine Freigaben und alles sollte in Ordnung sein? Oder gibt es noch etwas, das mir fehlt? Und gibt es spezielle Fälle, die ich mit ARC beachten sollte?

    
Epic Byte 23.07.2014, 01:46
quelle

2 Antworten

19

Der Mit Cocoa-Datentypen arbeiten Abschnitt von Swift mit Cocoa und Objective-C verwenden sagt (Betonung meins):

  

Core Foundation-Objekte, die von annotierten APIs zurückgegeben werden, werden automatisch in Swift verwaltet. Sie müssen nicht die Funktionen CFRetain , CFRelease oder CFAutorelease selbst aufrufen . Wenn Sie Core Foundation-Objekte von Ihren eigenen C-Funktionen und Objective-C-Methoden zurückgeben, kommentieren Sie sie mit mit CF_RETURNS_RETAINED oder CF_RETURNS_NOT_RETAINED .

     

...

     

Wenn Swift importierte APIs importiert, die nicht mit Anmerkungen versehen wurden, kann der Compiler die zurückgelieferten Core Foundation-Objekte nicht automatisch verwalten. Swift umschließt diese zurückgegebenen Core Foundation-Objekte in einer Unmanaged<T> -Struktur .

Also, es sei denn, Sie haben ein Unmanaged struct, das ist korrekt und Sie müssen sich keine Sorgen machen, das Objekt manuell freizugeben.

    
jtbandes 23.07.2014, 02:00
quelle
0

Wie die akzeptierte Antwort sagt: Ja, Sie brauchen CGPathRelease überhaupt nicht.

Hinweis: Wenn Sie Unmanaged<T> in Ihrem Code verwenden, überprüfen Sie die akzeptierte Antwort .

    
Dan Rosenstark 20.10.2015 18:11
quelle