2009-12-11 9 views
27

Wie löschen wir ein NSMutableData ohne Verwendung von Release und dann erneut zuweisen/init erneut zur erneuten Verwendung? Ich sah auf ResetBytesInRange auf Null gesetzt werden, aber ich bin mir nicht sicher. Jeder kann helfen?Wie löschen wir Inhalte in NSMutableData

Antwort

58

Wenn Sie einen leeren Puffer wollen:

[data setLength:0]; 

Wenn Sie möchten, um seine Größe zu halten, sondern setzen alle Bytes auf Null:

[data resetBytesInRange:NSMakeRange(0, [data length])]; 
+1

Was ist, [data setData: nil]; ? – karim

+0

@karim Die Dokumentation ist mehrdeutig, aber ich habe es gerade getestet, und es funktioniert auf OS X 10.8. – benzado

+1

Ich sehe, dass, wenn wir zweiten Code verwenden, die 'Daten' Variable immer den gleichen Speicher (aber alle sind gelöscht - 0000000). Wenn wir also versuchen, mehr Daten an "Daten" anzuhängen, wird sie am Ende dieses Bereichs angehängt. Zum Beispiel haben meine 'Daten' 300 Bytes, wir nennen das resetBytes, dann fügen wir weitere 100 Bytes hinzu. Die Länge von "Daten" beträgt 400 Byte (aber nicht 100 Byte). Abhängig von der Strategie können wir setLength oder resetBytesInRange verwenden. –

Verwandte Themen