3

NSArray を使用する代わりに、NSObject の C スタイルの配列を使用したいとしましょう。これにより、NSArray を使用した場合にパフォーマンスが低下することはありますか?

4

2 に答える 2

3

パフォーマンスが低下することはありません。実際、技術的にはパフォーマンスが向上するはずです。トレードオフするのは、非常に多くのNSArray機能と適度な量のカプセル化です。注意しないと、構文の問題やメモリ リークのリスクが生じます。

そうは言っても、私が取り組んだ 1 つのアプリには、2 次元配列のデータが含まれていました。便利なことに、配列は事前にわかっている固定サイズでした。そのためのロジックを、NSArray2 次元インデックスを取るカスタム アナログの内部に隠しました。初期の実装では、NSIndexPaths をキーとして辞書を使用していました。それはかなり遅かった。NSArrayのを試してみましたNSArray。それは遅かった。私は 2 次元 C 配列を試しましたが、それはかなり高速でした。時間をかけてバランスを取りましたretainrelease、パフォーマンスに悪影響はありませんでした.

于 2012-06-29T18:17:48.707 に答える
2

パフォーマンスの低下はありませんが、確かに柔軟性が失われます。s とは異なりNSMutableArray、C 配列は固定サイズです。C配列でも高速列挙を使用することはできず、配列インデックスを使用する必要があります。

これらの制限が要件で問題ない場合は、C 配列が機能するはずです。それらは ARC でもうまく機能します。強参照の C 配列が範囲外になると、ARC は に設定されていないすべてのインスタンスを解放しますnil

于 2012-06-29T18:14:58.883 に答える