我有一個相當大的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