プロパティで定義した変数に二次元配列を使う[objective-c]
📅 December 19, 2014
•⏱️1 min read
プロパティで定義した変数に二次元配列を使いたい
二次元配列の変数をプロパティで定義して使用したいことがありました。 ※余談ですが、ヘッダのプロパティで定義して、ソースファイルで @synthesize で宣言することで グローバル変数を定義できるのだと最初勘違いしてましたw@property (nonatomic, assign) double hogehoge[5][10];
※doubleなのは、たまたまそのときdoubleを使ってただけです
こんな風にヘッダファイルに宣言して、実装ファイルで使おうと思ったら ビルドエラー出たり、エラー消えても値が意図通りでなかったりうまくいきませんでした。
あれこれ試したらポインタのポインタでうまくいきました。
ヘッダファイル(*.h)
@property (nonatomic, assign) double **hogehoge;
実装ファイル(*.m)
実装ファイルでは、いつも通り使えます。fugafuga = hogehoge[1][2]; hogehoge[2][3] = fugafuga;
検索してみるとこちらのサイト様でも同じ説明をされている! なべろぐ様 - プロパティに二次元配列を使う こちらを拝見するまでメモリリークのこと頭にありませんでした。 メモリ確保も参考にさせていただきこんな感じ。
hogehoge = (double **)malloc(sizeof(double) * 5); for (int i = 0; i < 5; i++) { hogehoge[i] = (double *)malloc(sizeof(double) * 10); }
解放は、こんな感じ
for (int i = 0; i < 10; i++) { free(hogehoge[i]); } free(hogehoge);
お陰様で、解決しましたm(_ _)m ではでは。