Ist das der richtige Weg?
%Vor%Es funktioniert gut. Mein Hauptanliegen sind Speicherlecks. Undichte Datenpuffer machen keinen Spaß. Also ist die NSData, der Puffer und die dispatch_data_t new_data_file alles in Ordnung?
Von dem, was ich auf Ссылка lesen kann, scheint der Puffer DISPATCH_DATA_DESTRUCTOR_FREE zu sein . Bedeutet das, dass es meine Verantwortung ist, den Puffer freizugeben?
In den meisten Fällen ist Ihr Code korrekt.
+initWithBytes:length:
kopiert den übergebenen Puffer so, dass Sie sich nicht darum kümmern müssen, den Puffer nach den Daten freizugeben, Sie können die Daten zuerst sicher freigeben.
Gemäß der Dokumentation befreien Sie die Daten NICHT nachdem Sie damit fertig sind:
Wenn Sie Nicht-NULL-Werte für buffer_ptr oder size_ptr angeben, werden die Werte zurückgegeben Diese Variablen sind nur gültig, bis Sie die neu erstellten Dispatchdaten freigeben Objekt. Sie können diese Werte als schnellen Weg verwenden, um auf die Daten des neuen zuzugreifen Datenobjekt.
Sie geben einfach die Variable new_data_file
frei (ARC wird dies nicht für Sie tun).
Seit iOS 7 und Mac OS X 10.9 ( Foundation Versionshinweise ) dispatch_data_t
ist ein NSObject ( NSObject <OS_dispatch_data>
). dispatch_data_t
kann jetzt frei in NSData *
umgewandelt werden, nicht jedoch umgekehrt.
Tags und Links c ios grand-central-dispatch dispatch nsdata