私はこれについてしばらく読んできましたが、私は良い答えを見つけたのかどうかはわかりません。Objective-Cで構造体の配列を初期化
92個の構造体の配列を設定しようとしています。これは固定長であり、実質的にルックアップテーブルであるため変更されません。私はこれを行う最善の方法は、最初にcalloc
とメモリを割り当てて、その後、データを読み込むことだと思った。
しかし、いくつか読んだ後、私はこのように多くの人がcalloc
かmalloc
せずに直接メモリを割り当てる参照
myStruct myData[92] = { {1,2}, {3,4}, ....};
私の最初の質問は、動的にメモリを割り当てることが優れているかどうか?私の理解は、これがより良い解決策であるということでした。特にデータが必ずしも常に使用されるとは限りません。
私の2番目の質問は、データを初期化することです。私は... = {....};
を使って構造体を初期化できますが、コンパイラはそれを受け入れていないと読んでいました。質問1について
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!"
// ...
MYDATA [0] = ...、代入ではありません初期化。残念ながら、初期化構文は割り当てに使用できません。 –
スタティック割り当てが可能な場合にダイナミックアロケーションを使用するのはなぜですか? 'static myStruct myData [92]' – Lalaland
私が理解しようとしていることの一つです。私は、静的なものが固定されているような未知のものに対して動的な処理を行う方がよいと推測します。だから、私の最初のコードは、ダイナミックだったのは静的でなければならないのですが、それは(相対的に言えば)大きかったのですが? – drekka