1

私は、Cocoa との関連で Objective-C++ がどのように機能するかを理解していると思います。また、コマンドライン C++ の基本についてはかなり精通していますが、Objective-C と組み合わせてみるのはちょっと怖いです。Xcode で Interface Builder を使用して GUI を作成し、インターフェイスのクラス (.h および .m ファイル) を自動的に作成することもできます。アウトレット、おそらくアクション (私はまだ混乱しています) は、中括弧を開いたままにして、独自のコードを挿入します。したがって、それらのボタンから入力を取得する (そして出力などを確認する) ために、これらの括弧に C++ コードを入れることができます。 ?

この場合、C++ コードをどこに置くかを知っている限り、Obj-C を学ぶ必要はないと思います! 私が間違っている?

また、誰かがそれを理解するのを手伝ってくれますか、少なくともこれについてもっと学ぶことができる場所を教えてくれますか? このトピックは Web 上ではほとんど見られず、Apple のドキュメントも理解できません。

4

3 に答える 3

3

私の提案は、プロジェクトにObjective-Cファイル(.mファイル)を入れてから、Objective-C ++を別のファイル(diciuが言及しているように.mmファイル)に保持することです。

1つの戦略は、これらのObjective-C++クラスをC++クラスのラッパーとして使用することです。通常のように.cppファイルでC++でコードを記述します。次に、Objective-CファイルからC ++の一部の機能にアクセスする必要がある場合は、ラッパーのObjective-C ++クラスを作成し、Objective-Cから呼び出します。

この最後のビットは、小さなプロジェクトでは多くの作業のように感じますが、使用する必要のあるC ++がたくさんあり、作成するObjective-Cが比較的少ない場合、これはかなりうまく機能します。(十分にファクタリングされたWindowsまたはLinuxプログラム用のCocoaインターフェイスを作成している状況を想像してみてください。すべてのアプリケーションロジックがプラットフォームに依存しない方法で作成されており、実行するには、CocoaでUIを作成する必要があります。 Macで。

ただし、このラッパーアプローチを実行するもう1つの理由は、Objective-C ++がハイブリッド言語であるため、両方向での機能に制限があることです。

于 2010-01-15T12:28:23.380 に答える
2

Objective-C++ について理解しておく必要があるのは、名前が嘘だということです。または、少なくともあなたが思っているよりもはるかに多くのことを意味します。

Objective-C++ は、ハイブリッド Objective-C++ の「オブジェクト」を記述できるという意味ではありません。これは、同じファイルで c++ と目的の c を使用できることを意味します。相互に直接参照できますが、相互に継承または派生することはできません。

于 2010-01-15T20:31:27.627 に答える
0

.m ファイルの名前を .mm に変更すると、(Objective-)C++ コードを記述できるようになります。

于 2010-01-15T11:51:26.743 に答える