2016-04-05 1 views
0

私はインタビューで尋ねられた基本的なObjective-Cデータ構造の質問wrt NSMutableArrayを持っています。NSMutableArrayは、連続したメモリ割り当てでオブジェクトの順序付けられたコレクションですか?

私は、NSArrayが連続したメモリ位置に格納されたオブジェクトの順序付けられたコレクションであることを知っています。アレイオブジェクトの作成時に配列サイズが固定されているため、OSはそれに応じて連続したメモリを割り当てます。

NSMutableArrayについてはどうでしょうか。それはまた順序付けられ連続していますか?私が尋ねる理由は、実行時にn個のオブジェクトを可変配列に追加でき、可変配列が大きなサイズになる可能性があるということです。ある点を超えると、オブジェクトが連続したメモリ位置に格納されないことがあります。

+0

答えは純粋なスペキュレーションです(アップルのエンジニアがいない限り)。実装が変わる可能性があるため、完全に無関係です。 – Avi

+0

Appleエンジニアである必要はありません。 – gnasher729

答えて

0

どちらも順序付けされたオブジェクトの集合体ではなく、オブジェクトの参照番号の順序付きコレクションです。

NSMutableArrayは、配列の先頭または末尾の要素を素早く挿入したり、削除したりすることができます。それはあなたが知る必要があるものです。これを実現するデータ構造を簡単に把握する必要があります。

以降にNSArrayとNSMutableArrayの店舗参照参照の配列は、それが問題を起こすほど大きく成長することをオブジェクト自身が最初に問題を引き起こすので、それは珍しいだろう。メモリが足りなくなった場合、iOSはアプリを強制終了し、必要なメモリ容量を減らします。

+0

あなたは正しいです。 「Objective-Cでは、配列にはオブジェクトに属するオブジェクトは含まれておらず、各オブジェクトへのポインタが保持されています。オブジェクトが追加されると配列内にそのオブジェクトのアドレスが格納されます。 – Marimuthu

関連する問題