1

私は iOS アプリケーションを開発しています。このような .h ファイルのパブリック インターフェイスに BOOL の 2 次元配列を作成しました。

BOOL配列[10][10];

今、いくつかの関数の.mファイルで、他のサイズで再デカルしたいかもしれません

配列[20][20]

どうやってやるの?

4

2 に答える 2

2

C配列を使用する場合、それらは不変です。固定サイズの配列を割り当てると、変更できなくなります。

サブスクリプションを使用した 2 次元配列の可能な実装に関するソリューションをここに投稿しました。

2 次元配列インスタンス変数の Objective-c 構文

C配列を使用する場合は、メモリを自分で管理する必要があるため、.hで2次元配列へのポインタを宣言し、より大きな配列が必要な場合は、new、free、realloc、およびcopyを使用してメモリを割り当てることができます。私はこのアプローチを提案しません。

于 2013-04-30T10:27:37.240 に答える
0

簡単な答えは、できないということです。C配列の場合、構造体とそれに関連する関数を作成する以外にできることは次のとおりです。

// In your .h file you declare your arry this way:
extern BOOL *array;

// Assuming that you store _sizeI and _sizeJ for later indexing
// This gives you a 10x10 array of bools
_sizeI = 10;
_sizeJ = 10;
array  = calloc(_sizeI * _sizeJ, sizeof(BOOL));

// You index it as follows for array[i][j]
// You might use a macro for indexing.
BOOL value = array[_sizeI * i + j];

// To resize the array to a 20x20 array
free(array);
_sizeI = 20;
_sizeJ = 20;
array = calloc(_sizeI * _sizeJ, sizeof(BOOL));

ネストされた NSArray を使用するか、動的にサイズ変更された配列を操作するための構造と関連する関数を作成することをお勧めします。

于 2013-04-30T10:42:29.743 に答える