1

如何在构造函数中设置指向 C 数组的指针?

@implementation NSBufferedInputStream {
    char *buffer;
    int bufferSize;
}

- (id)initWithFileAtPath:(NSString *)path
{
    self = [super initWithFileAtPath:path];
    if (self) {
        bufferSize = 100;
        buffer = char[bufferSize]; // ERROR: Expected expression
    }
}
@end
4

2 回答 2

1

如果你真的需要一个动态大小的数组,

- (id)initWithFileAtPath:(NSString *)path
{
    self = [super initWithFileAtPath:path];
    if (self) {
        bufferSize = 100;
        buffer = malloc(sizeof(char) * bufferSize);
    }
}

- (void)dealloc
{
    free(buffer);
    [super dealloc];
}

否则,如果您的数组大小在编译时已知,只需将您的 ivar 从更改char *buffer;为:

char buffer[100]
于 2012-05-07T01:50:59.733 回答
0

如果数组的大小是动态的 - 使用malloc,如果不是,则需要在声明时进行:

@implementation NSBufferedInputStream {
    char buffer[100];
    int bufferSize;
}
于 2012-05-07T01:48:55.987 回答