2009-12-11 7 views
27

Comment effacer un NSMutableData sans utiliser release, puis ré-allouer/init à nouveau pour être utilisé à nouveau? Je regardais resetBytesInRange pour être mis à zéro mais je ne suis pas sûr de cela. Quelqu'un peut-il aider?Comment effacer le contenu dans NSMutableData

Répondre

58

Si vous voulez un tampon vide:

[data setLength:0]; 

Si vous voulez garder sa taille, mais mettre tous les octets à zéro:

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

Qu'en est-il, [setData de données: nil]; ? – karim

+0

@karim La documentation est ambiguë, mais je l'ai juste testée, et cela fonctionne sous OS X 10.8. – benzado

+1

Je vois que, si nous utilisons un second code, la variable 'data' contient toujours la même mémoire (mais toutes sont supprimées - 0000000). Par conséquent, si nous essayons d'ajouter plus de données à 'données', elles s'ajouteront à la fin de cette plage. Par exemple, mes 'données' ont 300 octets, nous appelons cela resetBytes, puis nous ajoutons plus de 100 octets. La longueur de 'data' sera de 400 octets (mais pas de 100 octets). Selon la stratégie, nous pouvons utiliser setLength ou resetBytesInRange. –

Questions connexes