33

私はHillegass の本を読んで、Objective-C と Cocoa を学んできましたが、Objective-C++ を使用したほうがよいのではないかと思いました。Objective-C は UI の開発に適しているように思えますが、私は C++ のバックグラウンドが非常に強いので、C++ でアプリケーション バックエンドを開発し、Objective-C++ を使用して UI の統合を行いたいと思っています。しかし、Apple が Objective-C++ を開発し続けるのか、それとも行き止まりになるのかは疑問です。

Objective-C++ を使用している人はいますか?

4

7 に答える 7

29

免責事項: 私は Apple のために働いたり話したりしていないので、これは私の意見です。

主要な開発ショップについて話すことはできませんが、私の小さなグループでは、C++ ライブラリを統合するためと、C++ でバックエンドを作成するために提案されているように、Objective-C++ を使用しました。@alxp が言及しているように、言語の境界を越えた例外処理などは苦痛ですが、少し計画を立てることで、これらの苦痛のほとんどを回避できます。経験豊富な C++ 開発者にとって、得られるものは苦痛に見合うだけの価値があります。

サポートに関しては、現在の状態でサポートがすぐになくなることはないと考えてよいと思います。これは GCC コード ベースの一部であり、Clangツールチェーン (Apple の次のコンパイラ ツールチェーン) は Objective-C++ を完全にサポートします。一方で、Apple が統合の開発を継続するという公式の保証はありません。たとえば、いぼのいくつかを修正します。

現在のプロジェクトでは、Objective-C++ を使用することでメリットが得られる場合は、既存のサポートに頼っても安全であり、それを使用する必要があります。

于 2009-01-02T16:10:32.637 に答える
7

私が ObjC++ を使用したのは、ライブラリを移植して ObjC コードからアクセスできるようにするときだけでした。ObjC++ と ObjC が例外やクラスの作成と破棄などを処理する方法が衝突しているため、1 つのプロジェクトで 2 つの言語を使いこなすのは非常に面倒でした。

Cocoa / Java は GCC の一部であり、Objective-C がストレートにコンパイルできるのと同じ方法で、Objective-C++ がストレート C++ にコンパイルされるため、Cocoa / Java で起こったようにサポートがすぐになくなるとは思いません。 C.

于 2009-01-02T13:46:20.353 に答える
4

Objective-Cがサポートされている限り、Objective-C++は引き続きサポートされる可能性があります。Obj-C ++はclangの基本的な目標であり、最終的にはAppleの推奨コンパイラとしてgccに取って代わることが期待されています。CarbonアプリケーションがCocoaフロントエンドに移行するにつれて、使用量が増える可能性があります。

もちろん、Appleは非常にエキサイティングな予測ができないため、「可能性が高い」という言葉は上に2回表示されます。:-)

于 2009-01-02T14:01:31.133 に答える
2

Apple が Cocoa と Objective C++ を更新する際に、Objective C++ を維持するために Apple が必要とする重要な繰り返しの努力が見られないため、Apple はしばらくの間 Objective C++ をサポートし続けると思われます。

于 2009-01-02T14:55:12.583 に答える
1

先日、Xcode のリファクタリング サポートを使用して、Objective-C++ ファイル内にある一部の Objective-C コードをリファクタリングしようとしたときに驚きました。メニュー項目が有効になっているにもかかわらず、「目的の C++ コードをリファクタリングできません。Xcode は C と目的の C コードのみをリファクタリングできます。」というメッセージが表示されます。エラーメッセージ。したがって、Objective-C++ のコンパイルは無期限に機能し続けますが、Objective-C++ は Xcode 内の第 2 級市民になると思います。

于 2012-03-02T06:07:09.783 に答える
0

すべてのコードからそれを取り出しました。.mm ファイルはありません。

ただし、.m ファイルと通信するには .cpp ファイルが必要です。解決策は、血液脳関門を無傷に保つ .c/.h ファイルです。

Objective-C を使用した C++ は、通常、荷物が多すぎます。

于 2013-02-28T01:13:58.297 に答える
-1

Objective-C は実際には、C 言語でオブジェクトをエミュレートする一連の C コードにすぎず、Objective-C ヘッダー ファイルを含む C コンパイラを引き続き使用します。C++ は C コードを実行するため、Objective-C++ を使用すると C++ コンパイラが使用され、Objective-C ヘッダーが C コードとしてインクルードされます。Objective-C++ は、基本的には C、C++、および Objective-C (実際には単なる C) です。

于 2013-07-03T02:55:21.953 に答える