私はすべて言語の多様性に賛成ですが、Objective Cは正気ではありません。だから私は興味があります:Cocoa APIなどを使用しながらC ++でiPhoneアプリをコーディングすることは可能ですか?
私はすべて言語の多様性に賛成ですが、Objective Cは正気ではありません。だから私は興味があります:Cocoa APIなどを使用しながらC ++でiPhoneアプリをコーディングすることは可能ですか?
回答:
短い答えです、はい、ちょっと。Apple Developer Connectionで参照できるObjective-C ++を使用できます。
すでにC ++を知っている場合、Objective-Cを学ぶことは、もしそれを試してみることに決めたなら、かなり簡単でしょう。そのトピックに関する詳細情報はADCにもあります。
Objective-Cは確かに最初は「異常」であるように見えますが、それに固執することをお勧めします。「a-ha」の瞬間があると、突然すべてが意味を持ち始めます。私にとって、Cocoaフレームワーク、言語、そしてすべてがどのように組み合わさるかを本当に理解するには、Objective-Cに集中して約2週間かかりました。しかし、私が本当にそれを「手に入れました」と、それは非常に刺激的でした。
それは決まり文句に聞こえますが、それは本当です。突き出して。
もちろん、C ++ライブラリまたは既存のC ++コードを取り込む場合は、これらのモジュールをObjective-C / Objective-C ++で使用できます。
私はObjective-Cを使用してUIを平手打ちします。
しかし、コードの根性はまだC ++で書かれています。
これが、Objective-CのUIインターフェースとイベント処理の主な目的です。
そして、それはその目的のために素晴らしい働きをします。
私はまだコードのバックエンドとしてC ++が好きです(しかし、それは主にC ++が好きなので)アプリケーションのバックエンドにもObjective-Cを非常に簡単に使用できます。
#include <XXX>
、C / C ++ファイルと同じように通常どおり使用できます。
まず、Objective-Cが「非常識」だと言うのは滑稽です。私は、Bjarne Stroustrup C ++の本を私のそばに置いて、1020ページを表示しています。Objective-Cに関するAppleのPDFは141です。
UIKitを使用する場合、C ++で何かを行うことは非常に困難です。AppleのUIに準拠する本格的なiPhoneアプリでは、UI部分をObjective-Cで作成する必要があります。OpenGLゲームを作成している場合にのみ、ほぼ完全にC / C ++を使用できます。
これについてある程度の経験があれば、実際に「コア」コードにC ++コードを使用できますが、iPhone固有のオブジェクトにはObjective-Cを使用する必要があります。
Objective-Cを強制的にC ++のように動作させようとしないでください。最初はこれが可能であるように見えますが、結果のコードはCocoaで実際にはうまく機能せず、何が起こっているのか非常に混乱します。時間を取って、C ++を使わずにGUIとiPhoneアプリケーションを構築する方法を適切に学習し、C ++ベースにリンクしてください。
Cocoa APIとのインターフェースにはObjective Cを使用する必要があるため、選択肢はありません。もちろん、バックグラウンドで好きなだけC ++を使用できます(Objective C ++を使用すると、これが簡単になります)。
確かに狂った言語ですが、慣れてきたら使うのも楽しいです。:-)
C ++についてはわかりませんが、MonoTouchと呼ばれる製品を使用して、C#でiPhoneアプリケーションを確実にコーディングできます。。
MonoTouchとObj-Cの詳細については、この投稿を参照してください。MonoTouchとObjective-Cのどちらを選択するか?
Javaで記述された計算集約型のAndroidアプリをiOS6に移植している最中です。非UIパーツをJavaからC ++に移植し、(最小限の)UIパーツをObj-Cで記述し、標準のC / C ++手法を使用して前者を(小さな)Cインターフェースでラップすることでこれを行っています。 CのスーパーセットであるObj-Cからアクセスできます。
これは今のところ効果があり、私は問題点に遭遇したことがありません。XcodeではC ++クラスとObj-Cクラスを作成でき、公式のサンプルコードの一部はこのように動作するため、これは正当なアプローチのようです。これを行うために、公式にサポートされているインターフェースの外側に出かける必要はありませんでした。
Xcodeのインターフェイスビルダーから提供されたヘルプを考慮すれば、可能であれば、C ++で残りのUIコードを記述することから得るものは多くないようです。そのため、私の答えは、C ++をほとんどすべてのアプリ、または適切で便利なアプリの数。
はい。しかし、非常に単純なプログラムを作成しているのでない限り、あらゆる種類のプログラムを単一の言語でプログラムできると考えるのは誤りです。Objective CはCocoa用で、C#は.NET用です。適切な作業に適切なツールを使用します。ブリッジングコードを記述してC ++をCocoaと対話させ、C ++コードをCocoaの要件に従って動作させようとすることは、C ++を期待するのも良い考えではありません。 Objective Cのパフォーマンスは 既存のスキルを考慮して、アプリのレイアウト設計とアーキテクチャを維持し、どの言語でどの部分を記述するかを決定して、それに応じて構築する必要があります。
私は現在、Objective-Xと呼ばれるObjective-C ++フレームワークを作成しています。これにより、PURE C ++ iPHONE PROGRAMMINGが可能になります。あなたはこのようにすることができます:
#import "ObjectiveX.h"
void GUIApplicationMain() {
GUIAlert Alert;
GUILabel Label;
GUIScreen MainScreen;
Alert.set_text(@"Just a lovely alert box!");
Alert.set_title(@"Hello!");
Alert.set_button(@"Okay");
Alert.show();
Label.set_text(@"Ciao!");
Label.set_position(100, 200, 120, 40);
MainScreen.init();
MainScreen.addGUIControl(Label.init());
}
GCCの適切なコマンドラインオプションを使用してコンパイルします。私はすでにこのhelloworldアプリをコンパイルしました&it w0rkX0rzは魅力のようです。;-)間もなくGoogleCodeで利用できるようになります。Objective-Xを検索するか、http://infotronix.orgfree.com/objectivexにアクセスしてください。一週間後!
更新された(ただし非アクティブな)URL:http : //code.google.com/p/objectivex/