私はこれについてしばらく読んでいますが、良い答えが見つかったかどうかはわかりません。
92 個の構造体の配列をセットアップしようとしています。これは固定長であり、事実上ルックアップ テーブルであるため変更されません。calloc
これを行う最善の方法は、最初にメモリを割り当ててからデータをロードすることだと思いました。
calloc
しかし、いくつか読んだ後、多くの人がこれなしで、またはmalloc
このように直接メモリを割り当てているのを見ます
myStruct myData[92] = { {1,2}, {3,4}, ....};
私の最初の質問は、メモリを動的に割り当てる方が良いかどうかです。私の理解では、これがより良い解決策でした。特に、データが常に使用されるとは限らない場合。
2 番目の質問は、データの初期化に関するものです。を使用して構造体を初期化できることを読んだことがあります... = {....};
が、コンパイラはそれを受け入れていません。
これが私がこれまでに持っているコードです:
typedef struct {
int a;
int b;
} myStruct;
@implementation MyClass
static myStruct *myData;
-(id) init {
// ...
myData = (myStruct *) calloc(92, sizeof(myStruct));
myData[0] = {1,2}; // <=== Error ! Compiler says "Expected expression!"
// ...