私はObjective-CとC ++でのプログラミングにはかなり自信がありますが、Objective-Cの方が使いやすく、本質的に柔軟性と動的性が高いと感じています。
iOSでゲームを書くためにObj-Cの代わりにC ++を使用する場合の長所と短所は何ですか?むしろ、C ++と比較してObj-Cの使用に既知の問題はありますか?
例えば、私は疑いのObj-Cは、C / C ++で書かれたコードと比較してパフォーマンスの問題があるかもしれません。
私はObjective-CとC ++でのプログラミングにはかなり自信がありますが、Objective-Cの方が使いやすく、本質的に柔軟性と動的性が高いと感じています。
iOSでゲームを書くためにObj-Cの代わりにC ++を使用する場合の長所と短所は何ですか?むしろ、C ++と比較してObj-Cの使用に既知の問題はありますか?
例えば、私は疑いのObj-Cは、C / C ++で書かれたコードと比較してパフォーマンスの問題があるかもしれません。
回答:
C ++の大きな利点:そうすることを決めた場合、Android / PC / DS / PSP /に移植するのは比較的簡単です(ここにプラットフォームを挿入してください)。Objective-Cは、ユーザーがゲーム全体を書き換えるまでiOSにロックします。
ここには本当の長所や短所はありません。少なくとも、ある言語のプログラマーが他の言語を使用しなければならないことを強制するものはありません。
パフォーマンスは問題になりません。優れたObj-Cプログラマーであれば、内部ループに大量のメッセージングを使用して重いリフティングを記述することはまずありません。つまり、実際にCで内部ループを記述することになります。レベルプログラマの場合、重いライブラリーを延期するために選択したライブラリーによっても重いリフティングが実行される可能性があります。
あなたがそれを気にするなら、移植性は本当の問題です。そうでない場合は、まあ。クロスプラットフォームであることだけが目的ではありません。最初に成功することは素晴らしいことです:)いつでも後で移植できます。とにかく1日目からクロスプラットフォームになることを慎重に計画していない場合は、同じ言語でいるだけではあまり意味がありません。対処する必要のあるプラットフォームには、さらに大きな違いがあります。
プロジェクトを終了することは、技術について心配するよりも重要です。Obj-Cで生産性が向上している場合は、Obj-Cにとどまります。
私の好み?私はC ++の男です。IのObj-Cのようなだけで罰金、私はC ++で幸せだ、と私はやる書き込み、クロスプラットフォームのコードを。
Obj-C over C ++にはパフォーマンスの問題はありません。どちらもコンパイルされたコードであり、Obj-CはCのスーパーセットであり、Obj-C ++はC ++のスーパーセットであることを思い出してください。これは、同じプログラムでObj-CとC ++ C ++側をサポートしています)。すべての言語の組み合わせがOpenGLをサポートしているため、深刻なグラフィックス作業は問題なく、言語に関係なくAppleのライブラリサポートは問題ありません。
とはいえ、ゲームの目的は何ですか?
もしあなたがIOSのためだけに書いているなら、心配しないで、あなたがより快適に感じるどんな言語や組み合わせでも書いてください。私はC ++よりもObj-Cを好むため、このオプションを使用する傾向があります。
別のデバイスへの移植を目的として作成している場合は、呼び出しが行われるデバイス固有のもの(グラフィック、入力、カメラなど)を処理するために、Obj-Cへの変換レイヤーを使用してC ++で記述します。アプリケーションのエントリポイント。
あなたが最も純粋で、たった一つの言語が欲しいなら、Obj-Cで書いてください。
他の人は他のライブラリ(物理学など)について話しました。あなたが話している言語の選択(Obj-C、C ++、またはObj-C ++)のいずれからもアクセスすることにまったく問題はありません。また、どの言語のライブラリでもパフォーマンスの問題は発生しません。
警告:メッセージの受け渡しを伴うポインター間接呼び出しがあります。それがどれだけオーバーヘッドとして解釈できるかはわかりません。それは、継承されたC ++メソッド呼び出しとまったく同じだと確信しているからです。誰もこれを明確にすることはできますか?
お役に立てば幸いです
リー。
Vector3D
Obj-Cでクラスを書きたいですか?私の直感は、パフォーマンスが低下する可能性があることを示しています。
プログラミングの内容によって異なります。主に既存の物理エンジンとグラフィックエンジンを使用するゲームロジックである場合、obj-cに慣れているのであれば、cまたはc ++を使用する理由は見当たらないと言えます。レンダリングクラスまたは物理クラスを展開する場合は、おそらくcまたはc ++を使用して作成します。Cocos2d-これはすばらしいもので、最も人気のあるiOSゲームライブラリの1つはobj-cで記述されています。
この記事を読んでください-関連する部分は「分業」です。高レベルの言語でコーディングするタイミングと低レベルを使用するタイミングを決定するのに役立つかもしれません: ゲームのマネージコード
Objective-CのオーバーヘッドはC#の近くではなく管理もされていないはずですが(iOSでも)、ロジックはまだ適用され、iOSを実行しているデバイスもMSILを解釈するPCほど強力ではありません:)
この調査では、CPUを集中的に使用するゲームで実際にパフォーマンスを得るには、Cを使用する必要があると述べています。リンクされた記事には、実行可能なXCodeプロジェクトが含まれています。
私は信じている一番下の行は、(すべての後、あなたはiPhoneの機能と相互作用しなければならない使用のObjective-C:でどこでもトランポリンを置くことは誰にとっても良いことはできません)、それはループ、ベクトルオブジェクトクラスのようなもの、または集中的に来るとき配列アクセス、C ++ STLまたはC配列に固執して良好なパフォーマンスを得る。
見るのは完全にばかげているだろうposition = [[Vector3 alloc] init] ;
。位置ベクトルなどの基本オブジェクトで参照カウントを使用する場合、パフォーマンスヒットを求めているだけです。
これらの比較もご覧ください。