Как очистить содержимое в NSMutableData

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


person Frank    schedule 11.12.2009    source источник


Ответы (2)


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

[data setLength:0];

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

[data resetBytesInRange:NSMakeRange(0, [data length])];
person benzado    schedule 11.12.2009
comment
Как насчет [data setData:nil]; ? - person karim; 11.03.2013
comment
@karim Документация неоднозначна, но я только что проверил ее, и она работает на OS X 10.8. - person benzado; 11.03.2013
comment
Я вижу, что если мы используем второй код, переменная «данные» всегда содержит одну и ту же память (но все удаляется - 0000000). Поэтому, если мы попытаемся добавить больше данных к «данным», они будут добавлены в конец этого диапазона. Например, мои «данные» имеют 300 байт, мы называем это resetBytes, затем добавляем еще 100 байт. Длина «данных» будет 400 байт (но не 100 байт). В зависимости от стратегии мы можем использовать setLength или resetBytesInRange. - person Duyen-Hoa; 28.08.2014

Быстрая версия установки всех байтов на ноль:

data.resetBytes(in: NSRange(location:0, length:data.length))
person Ales Teska    schedule 10.01.2019