for
ループがあります。そのループ内で、NSArray
をいくつかのオブジェクトで埋めたいと思います。しかし、それを可能にする方法は見当たりません。オブジェクトがいくつあるかを事前に知っています。 NSMutableArray
に比べて非常に大きなオーバーヘッドとパフォーマンスブレーキであると言われたので、NSArray
は避けたいと思います。
私はこのようなものを持っています:
NSArray *returnArray = [[NSArray alloc] init];
for (imageName in imageArray) {
UIImage *image = [UIImage imageNamed:imageName];
//Now, here I'd like to add that image to the array...
}
ドキュメントでNSArray
を調べましたが、そこに含まれる要素の数を指定するにはどうすればよいですか?それとも、本当にNSMutableArray
を使用する必要がありますか?
はい、NSMutableArray
を使用する必要があります:
int count = [imageArray count];
NSMutableArray *returnArray = [[NSMutableArray alloc] initWithCapacity:count];
for (imageName in imageArray) {
UIImage *image = [UIImage imageNamed:imageName];
[returnArray addObject: image];
...
}
編集-宣言が修正されました
追加はミューテーションであり、 NSArray は不変であるため、そのためには NSMutableArray を使用する必要があります。
後で、入力されたNSMutableArray
をNSArray
にすることはできますが( 説明はこちらを参照 )、通常の古いNSArray
近いうちに。
NSMutableArray を使用するのに良い時期でしょうか?
避けたいとおっしゃっていたのは知っていますが、こういう理由があることもあります。
NSMutableArray
isがパフォーマンスに影響を与えることがわかっている場合にのみ最適化することをお勧めしますが、そうである場合は、データを入力した後、可変配列からいつでも静的arayを作成できます。パフォーマンスへの影響が、その後のNSMutableArray
の使用によるものなのか、それとも単に作成したものなのかによって異なります。
私の推測では、これがアプリのパフォーマンスのボトルネックになることはないでしょう。