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 に答える