2009-12-11 15 views
27

¿Cómo borramos un NSMutableData sin usar la versión y luego lo redistribuimos/iniciamos de nuevo para usarlo nuevamente? Estaba buscando que resetBytesInRange se establezca en cero, pero no estoy seguro de esto. Cualquiera puede ayudar?¿Cómo eliminamos los contenidos en NSMutableData

Respuesta

58

Si desea un búfer vacío:

[data setLength:0]; 

Si desea mantener su tamaño, sino establecer todos los bytes a cero:

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

¿Qué pasa, [setData datos: nil]; ? – karim

+0

@karim La documentación es ambigua, pero acabo de probarla, y funciona en OS X 10.8. – benzado

+1

Veo que, si usamos el segundo código, la variable 'datos' contiene siempre la misma memoria (pero todos se eliminan - 0000000). Por lo tanto, si intentamos agregar más datos a 'datos', se agregarán al final de este rango. Por ejemplo, mi 'datos' tiene 300 bytes, llamamos a esto resetBytes, luego agregamos más 100 bytes. La longitud de 'datos' será de 400 bytes (pero no de 100 bytes). Depende de la estrategia, podemos usar setLength o resetBytesInRange. –

Cuestiones relacionadas