配列内のオブジェクトのメモリ割り当てに関する質問があります。私はオブジェクトの配列を作成しようとしていますが、コンパイル時には、必要なオブジェクトの数を知る方法がないため、必要以上に多くのメモリを予約したくありません。オブジェクトの配列のメモリ割り当て - 私の理解は有効ですか?
私がしたいのは、必要に応じてメモリを割り当てることです。私がこれをやりたいのは、ユーザが "Add"ボタンをクリックし、配列が1つの追加オブジェクトだけ増加し、新しいオブジェクトのために必要なメモリが割り当てられたときです。私は宣言
まず、:Objective Cの私の初心者の理解で
(私は20年ほど前にプロのプログラマーだった、そしてごく最近、再びコードを書くために始めている)私は、次のコードセグメントが出ています私のオブジェクト:(注:変数iが1の値で実施を開始し、[追加]ボタンがあるたびに増加しているユーザーは、[追加]ボタンをクリックしたときに
NSObject *myObject[1000]; // a maximum number of objects.
はその後、それが割り当てコードでメソッドを実行しますクリック)
++i
myObject[i] = [[NSObject alloc] init];
このように、1000個の配列オブジェクト全体ではなく、実際に必要なオブジェクトにのみメモリを割り当てたいと考えています。
これを正しく解釈していますか?言い換えれば、私の解釈では、宣言に記載された配列要素の数は、その時点で割り当てられているメモリの量ではなく、配列要素の最大数です。また、この正しい、そして理論的には、宣言:
NSObject *myObject[10000];
が宣言よりも、それ以上のメモリを引っ張らないでしょう:
NSObject *myObject[5];
誰かが私が正しく、このプロセスを理解していたことを確認することができ、私を啓発私はこれが私の心の中に混ざっている場合。 :)
ありがとう!
なぜNSMutableArrayまたはCFMutableArrayを使用しないのですか?オブジェクトを効率的に追加します。 CFArrayのソースは次のとおりです。http://www.opensource.apple.com/source/CF/CF-635/CFArray.c –
このチップをありがとう。私はそれがおそらく私がそれをやるべき方法だと確信しています。私は今までそれらのいずれかを聞いていなかった。奇妙なことに、私はおそらくホイールを再発明していることを知っていますが、理論的には、メモリ割り当てについての私の理解は正確ですか? –
Objective-CオブジェクトのC配列を使用しないでください。それは悪い考えです。言語によって提供される配列オブジェクトを使用します。私はObjective-Cの本を読むことを強くお勧めします。最高のもの(IMHO)はStephen Kochanの[Programming In Objective-C](http://www.amazon.com/dp/0321811909/)です。 –