2009-12-11 14 views
27

Come si cancella un NSMutableData senza utilizzare la release e quindi riassegnare/init di nuovo per essere riutilizzati? Stavo cercando resetBytesInRange da impostare a zero ma non sono sicuro di questo. Chiunque può aiutare?Come cancellare i contenuti in NSMutableData

risposta

58

Se si desidera un buffer vuoto:

[data setLength:0]; 

Se si desidera mantenere la sua dimensione, ma impostare tutti i byte a zero:

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

Che dire, [setData dati: nil]; ? – karim

+0

@karim La documentazione è ambigua, ma l'ho appena testata e funziona su OS X 10.8. – benzado

+1

Vedo che, se usiamo il secondo codice, la variabile "data" mantiene sempre la stessa memoria (ma tutti sono cancellati - 0000000). Pertanto, se proviamo ad aggiungere più dati a "dati", verrà aggiunto alla fine di questo intervallo. Ad esempio, il mio 'data' ha 300 byte, chiamiamo questo resetBytes, quindi aggiungiamo più 100 byte. La lunghezza dei 'dati' sarà di 400 byte (ma non di 100 byte). Dipende dalla strategia, possiamo usare setLength o resetBytesInRange. –

Problemi correlati