我有一个相当大的NSData(或NSMutableData,如有必要)对象,我想从中取出一小块剩余的。由于我正在处理大量的NSData字节,因此我不想创建大副本,而只是截断现有字节。基本上是:新的NSData与旧的NSData维护字节范围
- 的NSData *来源:<几个字节我想 丢弃字节我 想> + <大块保持>
- 的NSData *目的地:<大 块字节我想保持>
NSMutableData中有截断方法,但它们只截断它的末尾,而我想截断开始。我的想法是这样做的方法:
请注意,我在原始发布中使用了错误的(复制)方法。我已经编辑和修复它
- (const void *)bytes
和
- initWithBytesNoCopy:length:freeWhenDone:
不过,我想弄清楚如何使用这些管理内存。我猜的过程是这样的(我已经放在????地方我不知道该怎么做):
// Get bytes
const unsigned char *bytes = (const unsigned char *)[source bytes];
// Offset the start
bytes += myStart;
// Somehow (m)alloc the memory which will be freed up in the following step
?????
// Release the source, now that I've allocated the bytes
[source release];
// Create a new data, recycling the bytes so they don't have to be copied
NSData destination = [[NSData alloc]
initWithBytesNoCopy:bytes
length:myLength
freeWhenDone:YES];
感谢您的帮助!
我想这是更多的malloc问题? – umop 2010-04-20 22:18:30