作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个大小约为 1000kB 的 NSData 对象。现在我想通过蓝牙传输这个。如果我有 10 个 100kB 的对象,那就更好了。我想到我应该使用 NSData 的 -subdataWithRange:
方法。
我还没有真正使用过 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
后,无法安全地使用 block 对象。 chunk
片段指向 myBlob
拥有的内存,因此除非保留 myBlob
,否则不要保留它们。
关于iphone - 将 NSData 对象拆分为给定大小的其他 NSData 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2899020/
我是一名优秀的程序员,十分优秀!