Как очистить NSMutableData без использования освобождения, а затем снова перераспределить/инициировать для повторного использования? Я смотрел, чтобы resetBytesInRange был установлен на ноль, но я не уверен в этом. Кто-нибудь может помочь?
Как очистить содержимое в NSMutableData
Ответы (2)
Если вы хотите пустой буфер:
[data setLength:0];
Если вы хотите сохранить его размер, но установить все байты равными нулю:
[data resetBytesInRange:NSMakeRange(0, [data length])];
person
benzado
schedule
11.12.2009
Как насчет [data setData:nil]; ?
- person karim; 11.03.2013
@karim Документация неоднозначна, но я только что проверил ее, и она работает на OS X 10.8.
- person benzado; 11.03.2013
Я вижу, что если мы используем второй код, переменная «данные» всегда содержит одну и ту же память (но все удаляется - 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