NSArray を使用する代わりに、NSObject の C スタイルの配列を使用したいとしましょう。これにより、NSArray を使用した場合にパフォーマンスが低下することはありますか?
2 に答える
パフォーマンスが低下することはありません。実際、技術的にはパフォーマンスが向上するはずです。トレードオフするのは、非常に多くのNSArray
機能と適度な量のカプセル化です。注意しないと、構文の問題やメモリ リークのリスクが生じます。
そうは言っても、私が取り組んだ 1 つのアプリには、2 次元配列のデータが含まれていました。便利なことに、配列は事前にわかっている固定サイズでした。そのためのロジックを、NSArray
2 次元インデックスを取るカスタム アナログの内部に隠しました。初期の実装では、NSIndexPath
s をキーとして辞書を使用していました。それはかなり遅かった。NSArray
のを試してみましたNSArray
。それは遅かった。私は 2 次元 C 配列を試しましたが、それはかなり高速でした。時間をかけてバランスを取りましたretain
がrelease
、パフォーマンスに悪影響はありませんでした.
パフォーマンスの低下はありませんが、確かに柔軟性が失われます。s とは異なりNSMutableArray
、C 配列は固定サイズです。C配列でも高速列挙を使用することはできず、配列インデックスを使用する必要があります。
これらの制限が要件で問題ない場合は、C 配列が機能するはずです。それらは ARC でもうまく機能します。強参照の C 配列が範囲外になると、ARC は に設定されていないすべてのインスタンスを解放しますnil
。