According to Apple documentation, the class method
+datawithBytesNoCopy:length:freeWhenDone:
inherited from NSData
Creates and returns a data object that holds a given number of bytes from a given buffer.
But
NSUInteger len = 1024;
char *buffer = malloc(len);
NSMutableData *data = [NSMutableData dataWithBytesNoCopy:buffer length:len freeWhenDone:YES];
char *dataBytes = data.mutableBytes;
NSLog(@"%@", dataBytes == buffer ? @":D" : @":(");
prints
:(
The method seems to actually make a copy, where I expected it not to.
Am I using this the wrong way?
The equivalent NSData method works as expected.
How would I create an NSMutableData object pointing to an already existing buffer without taking any ownership?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…