Objective C ++とは何ですか?[閉まっている]


164

Objective C ++とは何ですか?この言語をXcodeで使用できますか?



「質問されていることを伝えるのが難しい」という近い理由は、質問を閉じるための古い理由でした。OPは実際には2つの異なる質問であるため、最近の理由は「広すぎる」でしょう。1つ目は、Objective C ++の説明には数ページかかること、2つ目は、Objective Cを使用してiOSのコーディングが明確に行われ、XCodeがiOS開発のデフォルトのIDEであるため、2つが関連しているとしても、それ自体が大きすぎる問題です。これらの種類の質問は、ドキュメントサイトに移動する必要があります。
ケリーS.フランス語

1
@ DaveVoyles-MSFT:質問に反対票を投じることと、600万人を超える機械化、工業化、組織化された体系的な大量殺人は同じことだと考える人を真剣に受け入れるのに苦労しています。
イェルクWミッターク

3
@JörgWMittag申し訳ありませんが、スタックオーバーフローモデレーターによる実際の質問ではないため、回答は締め切られました。
Dave Voyles、2018

1
@ DaveVoyles-MSFT:「本当の質問ではない」という投票の理由は何年も前に削除されました。
イェルクWミッターク

回答:


157

Objective-C ++は、Objective-CクラスとC ++クラス(2つのまったく関係のないエンティティ)を組み合わせた単純なソースコードです。C ++コードは以前と同様に機能し、結果の実行可能ファイルはObjective-Cランタイムとリンクされるため、Objective-Cクラスも同様に機能します。あなたは間違いなくXcodeでそれを使うことができます-あなたのファイルに.mm拡張子で名前を付けてください。

また、Objective-C ++に関するAppleの(悲しいことに削除されましたが、アーカイブされた)ドキュメントを読むこともできます


2
そのリンクの制限セクションはこれを示しており、引用する価値があります。Objective-C++はC ++機能をObjective-Cクラスに追加しません。また、Objective-C機能をC ++クラスに追加しません。たとえば、Objective-C構文を使用してC ++オブジェクトを呼び出すことはできません。コンストラクターまたはデストラクターをObjective-Cオブジェクトに追加することはできません。また、thisとthisを同じ意味で使用することはできません。クラス階層は別々です。C ++クラスはObjective-Cクラスから継承できません。また、Objective-CクラスはC ++クラスから継承できません。さらに、多言語の例外処理はサポートされていません
asgs

33

Objective-C ++は、C ++コード(推定クラス)とリンクする機能を備えたObjective-C(おそらくCocoa Frameworkを使用)です。

はい、Xcodeでこの言語を使用して、Mac OS X、iPhone / iPodTouch、iPad用に開発できます。それは非常にうまく機能します。

Objective-C ++を使用するためにプロジェクトで奇妙なことをする必要はありません。Objective-Cファイルに拡張子.mm.mではなく)を付けてください。これで問題ありません。

それは私のお気に入りのアーキテクチャです。私のゲーム/アプリケーションの基本クラスライブラリをC ++で開発して、他のプラットフォーム(Windows、Linux)で再利用し、iPhone / iPad UI固有のものだけにCocoaを使用できるようにします。


10
それはC ++とのリンクについてではありません-あなたは混合を意味しましたか?
Georg Fritzsche

6

Objective-c ++を使用したいがファイルに名前を付けたくない場合は.mm同様の質問に対する私の答えをチェックアウトしてください。

.mを.mmなどに変更せずに、プロジェクトをクリックした場合、tagets-> build settingsをクリックして、 「LLVM GCC 4.2-Languages」まで移動します(新しいxcodeは「Apple LLVM compiler 4.2」と表示しています)。表示されますとしてソースをコンパイルするに値その変更のObjective-C ++ ;


4
これは可能ですが、移植性が低く、.sがヘッダーで.rが実装ファイルであるコードを保守しようとしている人を混乱させる可能性があります。
Gradyプレーヤー、

.sと.rをどこから取得していますか?単純なObjective-cを使用する場合と同じように、メソッドファイルには標準の.m、ヘッダーには.hを使用できます。
John Riselvato 2013年

私は単に.mが何かを意味し、それを別の何かが非標準であることを意味すると言っています。
グレイディプレーヤー

stdベクトル(c ++ std)を使用するObjective-cでは、Objective-c ++をオンにする必要があります。私のobjective-cコード内でベクトルを使用するためだけに別のファイルタイプ拡張子を作成するのは意味がありません。
John Riselvato 2013年

13
絶対にそれはだろう、それはCOUT 'またはCの一部ではないものを使用する場合と
グラディプレーヤー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.