gpt4 book ai didi

iphone - 将 NSData 对象拆分为给定大小的其他 NSData 对象

转载 作者:行者123 更新时间:2023-12-03 18:16:43 27 4
gpt4 key购买 nike

我有一个大小约为 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com