iPhoneをC ++でプログラムすることは可能ですか


124

私はすべて言語の多様性に賛成ですが、Objective Cは正気ではありません。だから私は興味があります:Cocoa APIなどを使用しながらC ++でiPhoneアプリをコーディングすることは可能ですか?

回答:


57

短い答えです、はい、ちょっと。Apple Developer Connectionで参照できるObjective-C ++を使用できます

すでにC ++を知っている場合、Objective-Cを学ぶことは、もしそれを試してみることに決めたなら、かなり簡単でしょう。そのトピックに関する詳細情報はADCにもあります。


1
Objective-Cを学ぶために経験豊富なC ++プログラマーを対象とするWebサイトまたは本を推薦できますか?私はいくつかのテストが一緒にアプリマッシュするために管理しますが、私は、構文を少し後方を見つけて、私はちょうどのObjective-Cの知識不足によるメモリリークなどにつながるものやっていることを確信している
リー・ヘイズ

3
@LeaHayes「C ++からObjective-Cへ」という無料の本。C ++を知っていると想定し、Objective-Cでの処理方法が異なることを説明します。 pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf(これは元のフランス語の英語の翻訳です)
olafure

61

Objective-Cは確かに最初は「異常」であるように見えますが、それに固執することをお勧めします。「a-ha」の瞬間があると、突然すべてが意味を持ち始めます。私にとって、Cocoaフレームワーク、言語、そしてすべてがどのように組み合わさるかを本当に理解するには、Objective-Cに集中して約2週間かかりました。しかし、私が本当にそれを「手に入れました」と、それは非常に刺激的でした。

それは決まり文句に聞こえますが、それは本当です。突き出して。

もちろん、C ++ライブラリまたは既存のC ++コードを取り込む場合は、これらのモジュールをObjective-C / Objective-C ++で使用できます。


42

私はObjective-Cを使用してUIを平手打ちします。
しかし、コードの根性はまだC ++で書かれています。

これが、Objective-CのUIインターフェースとイベント処理の主な目的です。
そして、それはその目的のために素晴らしい働きをします。

私はまだコードのバックエンドとしてC ++が好きです(しかし、それは主にC ++が好きなので)アプリケーションのバックエンドにもObjective-Cを非常に簡単に使用できます。


9
@スパンキー:どのように私は正確に何をします。通常のCを* .mファイルに書き込むことができます。通常のC ++は* .mmファイルに記述できます(Objective-C ++)。Objective-C(++)ファイル内では#include <XXX>、C / C ++ファイルと同じように通常どおり使用できます。
Martin York

28

まず、Objective-Cが「非常識」だと言うのは滑稽です。私は、Bjarne Stroustrup C ++の本を私のそばに置いて、1020ページを表示しています。Objective-Cに関するAppleのPDFは141です。

UIKitを使用する場合、C ++で何かを行うことは非常に困難です。AppleのUIに準拠する本格的なiPhoneアプリでは、UI部分をObjective-Cで作成する必要があります。OpenGLゲームを作成している場合にのみ、ほぼ完全にC / C ++を使用できます。


30
ドキュメンテーションが少なくなったのはいつからですか?「C ++プログラミング言語」は非常に詳細で、STLについても説明しています。
Timmmm

2
@Timmmm:K&Rが彼らの本の前付けでその点を指摘して以来、Objective-CはC ++よりもはるかに小さな言語であり、同じ利点の多く(および独自の利点)を備えています。もちろん、すべてのトレードオフがあります。しかし、最小限のドキュメントにより、経験豊富なC(またはC ++)の人々がObj-Cを使いこなすのはかなり簡単になります。
Ben Zotto

62
申し訳ありませんが、ObjCは異常です。関数の宣言の完全に異なる方法への援助、ブラケットの使用。メリットがないので違います。彼らはばかげた構文なしに同じ効果的な言語を起草することができたでしょう。彼らはそうしないことを選んだ。したがって、それは非常識です。
ルバーブ

13
@Rhubarb-私はObjective-Cが好きですが、奇妙な構文は目的を果たさないことに同意する必要があります。
ラファエル

@Rhubarb、うん、Appleはその狂気を思いついた会社であり、Appleは違うという唯一の目的のために違うことを思い出してください。
SeanRamey

14

これについてある程度の経験があれば、実際に「コア」コードにC ++コードを使用できますが、iPhone固有のオブジェクトにはObjective-Cを使用する必要があります。

Objective-Cを強制的にC ++のように動作させようとしないでください。最初はこれが可能であるように見えますが、結果のコードはCocoaで実際にはうまく機能せず、何が起こっているのか非常に混乱します。時間を取って、C ++を使わずにGUIとiPhoneアプリケーションを構築する方法を適切に学習し、C ++ベースにリンクしてください。


3

Cocoa APIとのインターフェースにはObjective Cを使用する必要があるため、選択肢はありません。もちろん、バックグラウンドで好きなだけC ++を使用できます(Objective C ++を使用すると、これが簡単になります)。

確かに狂った言語ですが、慣れてきたら使うのも楽しいです。:-)



2

Javaで記述された計算集約型のAndroidアプリをiOS6に移植している最中です。非UIパーツをJavaからC ++に移植し、(最小限の)UIパーツをObj-Cで記述し、標準のC / C ++手法を使用して前者を(小さな)Cインターフェースでラップすることでこれを行っています。 CのスーパーセットであるObj-Cからアクセスできます。

これは今のところ効果があり、私は問題点に遭遇したことがありません。XcodeではC ++クラスとObj-Cクラスを作成でき、公式のサンプルコードの一部はこのように動作するため、これは正当なアプローチのようです。これを行うために、公式にサポートされているインターフェースの外側に出かける必要はありませんでした。

Xcodeのインターフェイスビルダーから提供されたヘルプを考慮すれば、可能であれば、C ++で残りのUIコードを記述することから得るものは多くないようです。そのため、私の答えは、C ++をほとんどすべてのアプリ、または適切で便利なアプリの数。


2

はい。しかし、非常に単純なプログラムを作成しているのでない限り、あらゆる種類のプログラムを単一の言語でプログラムできると考えるのは誤りです。Objective CはCocoa用で、C#は.NET用です。適切な作業に適切なツールを使用します。ブリッジングコードを記述してC ++をCocoaと対話させ、C ++コードをCocoaの要件に従って動作させようとすることは、C ++を期待するのも良い考えではありません。 Objective Cのパフォーマンスは 既存のスキルを考慮して、アプリのレイアウト設計とアーキテクチャを維持し、どの言語でどの部分を記述するかを決定して、それに応じて構築する必要があります。


0

私は現在、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/


4
実際に利用できるようになるまで、投稿を待ってみませんか?
Georg Fritzsche、2010

8
両方のリンクは現在404です
Zhao Xiang

1
SourceForgeによると:「2014-01-24現在、このプロジェクトは現在活発に開発されていません。」sourceforge.net/projects/objectivex
JAL、

0

少しおかしいかもしれませんが、とにかく。iOSデバイスでc ++を直接プログラミングできます。CppCode iOSアプリ-http : //cppcode.infoを確認してください。後でcとc ++、objective-cを学ぶのに役立つと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.