7月
2
2010

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

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

ArrayClass.h

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

@property (nonatomic) 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

Related Posts

About the Author:

大阪のプログラマー(87世代)。 関心: C/C++, Objective-C, C#, TopCoder, Unix, Java, PHP, JavaScriptなど。 最近はWebサービスに夢中です!

1 Comment + Add Comment

  • すばらしい!!

Leave a comment


Now loading...

PR

Flickr