Home

読み込み中...

Objective-Cで二次元配列を扱う

2010/07/02

このエントリーをはてなブックマークに追加

クラスのプロパティに二次元配列を持たせます。
ここでは、メモリを動的に確保する方向でいきます(そんなわけで、実際はただのポインタのポインタ)。

ArrayClass.h

@interface ArrayClass : NSObject {
  char **array;
}

@property (nonatomic, readonly) char **array;

@end

ArrayClass.m

@implementation ArrayClass

@synthesize array;

-(id)init {
  self = [super init];

  if (self) {
    array = (char**)malloc(sizeof(char*)*10);
    for (int i = 0; i < 10; i++) {
      array[i] = (char*)malloc(sizeof(char)*15);
    }
  }

  return self;
}

-(void)dealloc {
  for (int i = 0 ; i < 10; i++) {
    free(array[i]);
  }
  free(array);
  [super dealloc];
}

@end

こうすることで、

ArrayClass *obj = [[[ArrayClass alloc] init] autorelease];
obj.array[0][1] = 1;

のように扱うことができます。

参考リンク

  1. Dynamic allocation of two dimensional array by C

Leave a comment