NSArray と CCArray の違いは何ですか? また、ゲームプログラミングに関して、どちらが優先されるのはどのような場合ですか?
3 に答える
CCArray は NSMutableArray をエミュレートします。C 配列 (メモリ バッファー) のラッパーです。NSMutableArray が遅すぎると判断されたため、cocos2d によって開発され、内部で使用されています。ただし、パフォーマンスの向上は最小限です。cocos2d 自体が使用しない CCArray の使用例 (機能) は、奇妙でデバッグが困難な問題やひどいパフォーマンス特性など、問題の潜在的な原因として残ります。
最も重要なパフォーマンスの重要な側面は、配列を順次読み取ることです。私の最新のテストでは、CCArray (もはや?) が優れている分野です。特に高速な列挙: NSMutableArray は約 33 倍高速です!
CCArray は、車輪を再発明してはならない理由の完璧な例です。特に、安定した実績のある高速なソリューション (NSMutableArray) が既に利用可能なストレージ クラスに関してはそうです。かつてあったかもしれない速度の利点は、とっくに失われています。残っているのは、いくつかの非常に悪いパフォーマンス特性 (挿入、高速な列挙) など、対処したくない実行時の動作です。
簡単に言うと、独自のコードでCCArrayを使用しないでください。CCArray を内部のプライベート クラスのように扱い、ユーザー コードで使用しないようにします (避けられない場合、つまり子配列を除く)。
NSMutableArray は、非常によくテストされ、文書化されており、(実行時の動作と速度の両方の点で) 安定しているため、誰もが使用すべき配列リファレンス実装です。
それを確認してください....
プログラミングを
楽しむ
CCArray http://www.cocos2d-x.org/embedded/cocos2d-x/d9/d2e/classcocos2d_1_1_c_c_array.html
cocos2d-x では、CCArray は変更可能です。つまり、要素を追加できます。容量のない CCArray インスタンスを作成するには、CCArray::array() コンストラクターを使用できます。CCMutableArray は、同じ型のオブジェクトを格納できるテンプレート ベースのコンテナーです。CCArray はオブジェクトを CCObject インスタンスとして格納するため、CCArray インスタンスから取得した後にキャストする必要があります
NSArray クラスには、Objective-C プログラム内での配列の作成と操作を容易にするために特別に設計された多数のメソッドが含まれています。