2009-12-11 6 views
27

Как очистить NSMutableData без использования release, а затем повторно назначить/init снова, чтобы снова использовать? Я смотрел на resetBytesInRange, который должен быть установлен на ноль, но я не уверен в этом. Кто-нибудь может помочь?Как очистить содержимое в NSMutableData

ответ

58

Если вы хотите пустой буфер:

[data setLength:0]; 

Если вы хотите сохранить его размер, но установить все байты нулю:

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

насчет [УстановитьДанные данные: ноль]; ? – karim

+0

@karim Документация неоднозначна, но я просто ее протестировал, и она работает на OS X 10.8. – benzado

+1

Я вижу, что если мы используем второй код, переменная 'data' всегда содержит одну и ту же память (но все они удаляются - 0000000). Поэтому, если мы попытаемся добавить больше данных в «данные», они добавятся в конце этого диапазона. Например, мои «данные» имеют 300 байт, мы называем этот resetBytes, затем добавляем более 100 байт. Длина «данных» будет составлять 400 байт (но не 100 байт). В зависимости от стратегии, мы можем использовать setLength или resetBytesInRange. –

Смежные вопросы