我有一个大小约为 1000kB 的 NSData 对象。现在我想通过蓝牙传输这个。如果我有 10 个 100kB 的对象,那就更好了。我想到我应该使用-subdataWithRange:
NSData 的方法。
我还没有真正使用过 NSRange。好吧,我知道它是如何工作的,但我不知道如何从给定位置读取长度:“到文件末尾”...我不知道该怎么做。
一些关于如何将其拆分为多个 100kB 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
已发布(或以其他方式修改)。chunk
片段指向拥有的内存myBlob
,所以不要保留它们,除非你保留myBlob
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)