设置NSMutableData时:
NSMutableData* mRgb = [NSMutableData dataWithCapacity:3];
((char*)[mRgb mutableBytes])[0] = 10;
((char*)[mRgb mutableBytes])[1] = 90;
((char*)[mRgb mutableBytes])[2] = 160;
我遇到长度仍为0的问题:
int len = [mRgb length]; // Is 0!
为什么会这样?
答案 0 :(得分:4)
dataWithCapacity
只保留内存中的许多字节,但这并不意味着数据的大小。
这种情况的一个例子是从互联网接收图像。在前面你不知道图像有多大,所以只需创建一个容量为1MB的Data对象,这样你就不会在收到更多数据时不断调整数据大小。
您要使用的是dataWithLength
方法,它从一开始就创建一个包含许多字节的数据对象。或者,您可以致电setLength:N
来更改正在使用的数据量。
答案 1 :(得分:3)
dataWithCapacity:
“......不一定立即分配请求的内存。可变数据对象根据需要分配额外的内存......”
使用dataWithLength:
,它会分配和归零请求的数量。