У меня есть объект NSData приблизительно 1000 КБ в размере. Теперь я хочу передать это через Bluetooth. Было бы лучше, если у меня есть, скажем, 10 объектов 100 КБ. Это приходит на ум, который я должен использовать -subdataWithRange:
метод NSData.
Я действительно не работал с NSRange. Ну, я знаю, как это работает, но я не могу выяснить, как читать из данного местоположения с длиной: 'к концу файла'... Я понятия не имею, как сделать это.
Некоторый код того, как разделить это приблизительно на 100 КБ объекты NSData, действительно помог бы мне здесь. (это, вероятно, включает -length
метод для наблюдения, сколько объектов должно быть сделано..?)
Заранее спасибо.
Следующий фрагмент кода выполняет фрагментацию без копирования данных:
NSData* myBlob;
NSUInteger length = [myBlob length];
NSUInteger chunkSize = 100 * 1024;
NSUInteger offset = 0;
do {
NSUInteger thisChunkSize = length - offset > chunkSize ? chunkSize : length - offset;
NSData* chunk = [NSData dataWithBytesNoCopy:(char *)[myBlob bytes] + offset
length:thisChunkSize
freeWhenDone:NO];
offset += thisChunkSize;
// do something with chunk
} while (offset < length);
Дополнительное примечание: я должен добавить, что объекты фрагментов нельзя безопасно использовать после того, как myBlob
был выпущен (или иным образом измененный). фрагменты блока
указывают в память, принадлежащую myBlob
, поэтому не сохраняйте их, если не сохраните myBlob
.