我刚刚意识到我在Xcode NSData Class中搜索了30分钟如何在objc中执行此操作(对不起,我在C中解释这个,因为这是唯一没有考虑太多的语言):
#define MAX_SIZE_BUFFER 500
byte *ptr;
ptr = malloc(MAX_SIZE_BUFFER * sizeof(byte));
memset(ptr, 0, MAX_SIZE_BUFFER);
我开始像这样编码,但从未发现如何初始化MAX_SIZE_BUFFER并以智能方式将所有字节设置为0:
#define MAX_SIZE_BUFFER 500
NSData *ptr
ptr = [[[NSData] alloc] init]; // impossible to specify MAX_SIZE_BUFFER in the allocation.
因此我告诉自己,让我们使用类方法:
+ data
+ dataWithBytes:length:
+ dataWithBytesNoCopy:length:
+ dataWithBytesNoCopy:length:freeWhenDone:
+ dataWithContentsOfFile:
+ dataWithContentsOfFile:options:error:
+ dataWithContentsOfMappedFile:
+ dataWithContentsOfURL:
+ dataWithContentsOfURL:options:error:
+ dataWithData:
但是没有一个能够完成alloc和空白init。
例如:+ dataWithBytes:length:要求创建备用C缓冲区并将其作为方法的参数给出。
我应该认为自己像个白痴,还是像个坏的程序员?
说真的,你有一个聪明而简单的方法吗?
Apple92
答案 0 :(得分:6)
NSData是不可变的,因此所有初始值设定项都需要缓冲区的内容。你想要的是NSMutableData的initWithLength: