7

私はここ数か月 C++ を学んでいますが、その利点はあるものの、C++ は優れた言語であることがわかりました。

いわゆるObjective-C++とは正確には何なのか、Apple 環境 (つまり、Mac OS X、iPhone OS) を対象とする主要な開発言語として学ぶ価値があるかどうか疑問に思っていました。主にウィキペディアのエントリMac Dev Centerのエントリです。

ウィキペディアは次のように述べています。

Objective-C++ は、C++ と Objective-C 構文の組み合わせを使用するソース ファイルをコンパイルできる GNU Compiler Collection のフロントエンドです。Objective-C++ は、Objective-C が C に追加する拡張機能を C++ に追加します。

Mac Dev Center の記事には次のように追加されています。

Apple の Objective-C コンパイラを使用すると、C++ と Objective-C のコードを同じソース ファイルに自由に混在させることができます。この Objective-C/C++ 言語ハイブリッドは、Objective-C++ と呼ばれます。これにより、Objective-C アプリケーションから既存の C++ ライブラリを利用できます。

Apple の記事では、Objective-C++ を言語と呼んでいます。これは正しいですか?

次のことを知りたいです。

  • C/Objective-C を知らなくても、Objective-C++ を学習して使用することは可能ですか?
  • より多くの情報やヘルプを得ることができる良い本、サイト、フォーラムなどはありますか?
  • あなたが知る限り、Objective-C++ で行われた大きなプロジェクトはありますか?
4

5 に答える 5

8

はい、競争力のある商業的強み (つまり、人々がお金を払っても構わないと思っているほど優れている) の Apple アプリケーションを開発したい場合は、Objective-C++ を学ぶ必要があります。

実際、Objective-C と C++ を同じファイルにまとめたものに他なりません。

Objective-C については、人気のある Apple 開発ブログ/メーリング リスト/ニュースグループのいずれかを使用してください。特にAppleから直接提供されたもの。

C++ の場合も同じで、多数のブログ/メーリング リスト/スターター チュートリアルがあります。しかし、C とその Objective-C アドオンは非常にシンプルであり、プログラミングを既に理解している場合は簡単に習得できます。C++ は、まったく異なる複雑な獣です。良い本を何冊か手に入れて、それを学んでください (10 年もすれば言語を完全に理解できるようになります :-) が、この知識のほんの一部で C++ プログラムを書くことができます。

ここで、Objective-C を使用できるのに、なぜ C++ を使用する必要があるのか​​という魔法の質問です。答えはとても簡単です。既存の C++ ライブラリの明白なラッピングに加えて、Objective-C は遅いです。まず第一に、メソッド呼び出しです。通常のアドバイスは、この言語で現れるこの実行時のペナルティを回避するために、メソッドで何か深刻なことを行うことです。

ただし、特にコンテナーの場合は、C++ テンプレートの使用を検討する必要があります。ベクトルは、NSArray よりもはるかに高速です。データセットが大きい場合、違いを感じるでしょう。また、C++ コンテナーは、Objective-C で行わなければならない型キャストを回避するため、使いやすいと思います。

iPad と iPhone の遅い ARM CPU では、これは時期尚早の最適化ではありません。

残念ながら、C++ と Cocoa のクラスを混在させることはできないため、C++ はアルゴリズム データにのみ使用する必要があります。GUI には、Cocoa および Objective-C クラスを使用する必要があります。

C++ と Objective-C の適切なバランスを取ることは、Apple プログラマーとして開発する必要があるスキルの一部です。

于 2010-02-06T05:37:13.600 に答える
8

Objective-C++ は実際には Objective-C と C++ を混ぜただけです。両方の構文を使用できるため、新しい言語であると主張できます。

私は主に、Objective-C コードを C++ ライブラリとインターフェイスさせる必要がある場合に、ObjC++ (.mm ソース ファイル) を使用します。そんな時にC++が呼び出せると便利です。個人的には、C++ と Objective-C を実際に混在させている人をあまり知りません。

于 2010-01-22T12:51:01.600 に答える
1

1)それらのすべてがC言語のスーパーセットであるため、私はそれを疑っています。私はobjective-c++をまったく新しい言語とは考えていません。両方を組み合わせただけで、いくつかの追加の可能性が得られます。つまり、既存のc ++コードを再利用するか、よりタイムクリティカルなコードセクションでより高速なc ++を使用するか、Objective-c /cocoaインターフェイスが公開されていないc++コードを使用します(主にハードウェア関連の低レベルシリアルポート/ioctls、opengl、...などのようなもの

2)このトピックに関するリソースは

3)合格...私はあなたが大きなと思うものを意味します。私は、1にリストされている理由で、このミックスを使用する一連のプロジェクト(おそらく、ストアでソフトウェアを購入できるという意味で、すべてが商用ではない)から知っています。

于 2010-01-22T13:38:18.750 に答える
0

多くの大規模なプロジェクトでは、いくつかの Objective-C++ が使用されています。たとえば、Camino、Chromium、Firefox はすべて、Objective-C++ を含む実質的なオープンソース プロジェクトです。

于 2010-01-22T15:30:19.517 に答える