2016-06-15 9 views
1

:私は直接上記の初期化後countを使用することによって、それのサイズを取得しようとした場合NSMutableArrayの容量を取得するには?私は次のコードしている

[[NSMutableArray alloc] initWithCapacity:slidingValue] 

しかし、それはまだかかわらず、そこに何の追加オブジェクトはありません0を返します。

私はそれの能力を得ることができますか?

+0

「NSMutableArray」には初期固定サイズがありません。要素を追加するにつれて大きくなります。 'initWithCapacity:'の 'capacity'は、パフォーマンス目的のヒントに過ぎないと思います。ドキュメントを参照してください:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/#//apple_ref/occ/instm/NSMutableArray/initWithCapacity: –

+0

うーん... Im wonderingなぜあなたはNSMutaleArrayの容量が必要ですか? XY問題のように見えます。 – kukushi

+0

容量として設定したslidingValueを持っている場合、なぜ配列から同じものが必要なのですか?既にarrayに割り当てられているslidingValueを使用することができます。 – Vickyexpert

答えて

1

容量は必要ありません。これは最適化であり、指定する容量の大きさと内部アルゴリズムNSArrayが選択するものは実際には無視される可能性があります。取得するときにオブジェクトを追加するには、 - addObject:または - insertObject:を使用します。 CFArrayとは異なり、NSArrayの容量はハード制限ではありません。それは単なる提案です。

あなたがランダムな順序で(しかし、インデックス番号で)あなたのオブジェクトを取得する場合は、配列を作成し、[NSNull null]オブジェクト使ってそれを埋めることができ - あなたはそれを得るように、実際のオブジェクトにNSNullを置き換え、その後、addObject:。しかし後者はめったに必要ありません。

注:

からinitWithCapacity:方法は、アレイは、メモリ再割り当ての前に到達することができる方法を大のヒントと空の配列を作成します。実際に-addObject:を配列に追加すると、カウントが増加します。

関連する問題