2009-11-14 18 views
15

iPhone用のポータブルライブラリを作成したいと思います。これは他のプラットフォームでも使用できます。 Objective-CまたはObjective-C++:iPhone用C対C++(Objective-C対Objective-C++)

は、誰もがiPhone上で使用することが最善であるかを知っているん:

私の質問は休閑ありますか?それはObjective-CとC++と同じように動作しますか?

理由: Objective-CはCのスーパーセットですが、Objective-C++ is notはC++のスーパーセットです。

ありがとうございます!

更新:ユースケースの同じ実装では、メモリ使用量はどうですか?

UPDATE1:誰でも情報を提供できる場合は、彼を歓迎します。

+4

実際にコードでない限り、syntax-highlighting-environmentには何も置かないでください。 –

+6

Objective-C++ *は* C++のスーパーセットです。 –

+0

バリーワーク、私にそれを見つけることができるリンクを教えてください。 C++とobjcの間のの組み合わせはです。 – mxg

答えて

11

本当に異なる言語ではありません。 Objective-C++はObjective-Cであり、C++コードのサポートはわずかに限定されています。 Objective-Cは標準の方言ですが、C++で作業する必要がある場合は、それを使用しない理由はありません。 AFAIKは、(異なるライブラリの使用を許可する以外の)最大の実用的な違いは、Objective-C++が少し遅くコンパイルされるようだということです。 C++とObjective-Cのマージは100%シームレスではないので、まずそのルートに進むことを決めたら、まずそれを読んでください。

6

iPhoneおよびMac OS以外のプラットフォームでこのライブラリを使用する場合は、C++を使用する必要があります。 Mac OSに移植する予定がある場合は、Objective-Cを使用してください。 Objective-C++は、既存のC++コードをObjective-Cプロジェクトに統合する単なる方法です。したがって、あなたはその中にライブラリを書きません。ただし、Objective-C++を使用してiPhoneまたはMacプロジェクトからこのライブラリを使用することもできます。

18

ポータブルライブラリを作成していて、特定の言語機能が必要ない場合は、C言語で記述してください。 C++、C、Objective-C、その他の多くの言語から簡単に呼び出すことができます。

あなたがCで利用できない特定の言語機能が必要な場合は、CやCのため

1

Goは++)=彼らはあなたがより良いアドバイスを得ることができますが何であるかを教えなければならない - 私はいかなる理由が表示されませんあなたの目標についてもっと知らずに、お互いを推薦する。

メモリ使用量に関しては、C++とCはより規律の高いコーディングを要求します。速度面では、CおよびC++は事実上どんなObjC/ObjC++ソリューションよりも高速になります。 Objective CアプリケーションをCやC++コードと頻繁に混在させ、結果に常に満足していました。 Jonathanが正しく述べたように、ObjectiveC++は、Objective Cアプリケーション内でC++コード/ライブラリを使用するためのブリッジです。

Objective C++内から自由にC++オブジェクトを使用できます。ただし、Objective C/C++オブジェクトをC++で使用することはできません。だからその一方通行。この制限によって課せられた制限を克服するには、Objective C++クラスで必要に応じてC++オブジェクトをラップするだけです。

+0

私はこれをすべて知っています。 objcはCのスーパーセットですが、objC++はC++のスーパーセットではありません。つまり、objC++の実装に応じていくつかの驚きが現れることを意味します。それが私が求めていることです。驚きはありますか? – mxg

+0

隠された警告に遭遇したことはありません。 – Till

16

私はあなたの情報が間違っていると思います。 Objective-C++ で、C++のスーパーセットです。すべてのC++は正当なObjective-C++です。さらに、Objective-C++(通常は.mm)ファイルにObjective-CとC++コードを混在させることができます(いくつかの制限があります)。Objective-C++クラスのインスタンス変数をObjective-C++クラスに混在させることができます。Objective-C++はObjective-CとC++ライブラリ間のインタフェースに特に便利です。クロスプラットフォームのライブラリをC++で記述します。 Objective-C++からアプリケーション内で呼び出すことができます。 Objective-C言語ガイドのObjective-C++ sectionを再読み込みしてください。

Objective-C++の主な欠点は、Objective-C++がC++よりも悪く、Objective-C++をまだ処理していないコンパイル時間の増加です。 Objective-CとObjective-C++の間には、呼び出されるコードの違い以外にパフォーマンスの違いはありません(たとえば、C++開発者がより優れている場合は、C++よりも効率的です)。

+0

間違って私は投票しましたが、Objective-C++はC++のスーパーセットではありません。より注意深くお読みください。あなたが私に与えたリンクをドキュメンテーションフォームに書いてあります。 "AppleのObjective-Cコンパイラでは、同じソースファイルにC++とObjective-Cコードを自由に混在させることができます。Objective-C/C++言語のハイブリッドはObjective-C++と呼ばれています。" – mxg

+6

私の記事で述べたように、有効なC++は有効なObjective-C++であると信じていますが、有効なObjective-C++はすべて有効なC++ではありません。私はあなたが引用したテキストを誤解していると思います。 –

+0

この回答を見る:http://stackoverflow.com/questions/525609/use-c-with-cocoa-instead-of-objective-c/529017#529017 –

3

実際には、XcodeでCまたはC++を使用できます。 CocoaとCocoa Touch(iphone)でObjective Cを使用する理由は、その使いやすさと、それが自分自身の上で出会うだろうメモリの問題の多くをどのように処理するのかである。目的CとXcodeは夢のように動作します。私もチェックアウトすることをお勧めしますhttp://www.kevincallahan.org/software/accessorizer.html Accessorizerは素晴らしいですし、何も開発時間を削減します。

私は、CまたはC++で関数/メソッドを記述し、XCodeプロジェクトの一部でそれらを使用することに問題はないと言いましたが、 Objective Cを他のプラットフォームでうまく使うために使用することは期待しないでください。 AppleとWindowsの開発IDEは異なり、マイクロソフトは他の環境(Appleだけでなく)との互換性を持たないという良い習慣を持っています。他のプロジェクトでコードを再利用しようとしている人を歓迎します。最近、あまりにも多くの人が独自の図書館を作ることを忘れています。

こちらがお役に立てば幸いです。乾杯、 Matthew

3

あなたの注意点は次のとおりです。開発者になるのに100を費やして、Macで作業するIDEをxcodeで起動します。これは、あなたが決定する最良の方法ですこのプラットフォームがどのように動作するかを完全に理解していない。

あなたを助けようとしているすべての人に無礼にしないでください。このコミュニティは尊重されています。ここの人々は実際に実際に実際に助けて気を配り、ネットの左にこれほどの場所はありません。

+0

;)Matthew、私の間違い! – mxg

関連する問題