0

私の英語が下手でごめんなさい。iOS プロジェクトで純粋な C++ コードを使用しようとしていますが、次の問題があります。

1 つの新しいファイル product.cpp + product.h を作成し、独自のメソッドと属性を作成します。viewcontroller.m でこのクラスを使用したいのですが、実行しないでください。viewcontroller.m の拡張子を viewcontroller.mm に変更します。実行しませんが、appDelegate.m の拡張子を appDelegate.mm に変更すると、問題なく実行されます。

私の質問は、.cpp を使用したい場合、常に mi ファイルを .mm に変更する必要があるということですか?

:/

4

1 に答える 1

0

通常、.mm のファイル拡張子は Xcode に Objective-C++ コンパイラを呼び出すように指示しますが、.m はコンパイラに Objective-C コンパイラを呼び出すように指示します。右側のファイル設定ペインを使用して、ファイルごとにコンパイラの種類を設定できます (したがって、.m ファイルで Objective-C++ コンパイルを強制できます) が、これは直感的ではなく、将来のメンテナーを混乱させる可能性があります。 .

長年の C++ と Objective-C のユーザーからのアドバイスを検討する気があるなら、私はこの 2 つを何度も混ぜ合わせてきました。純粋に Objective-C に固執する場合は、はるかに優れています。統合する必要がある C++ ライブラリがある場合、そのための C ラッパーを作成します。

以前は、Xcode アナライザーは Objective-C++ ではなく、Objective-C ファイルでのみ機能していたため、Objective-C++ ファイルを作成することでツールが提供する多くの価値を失うことになります。私が最後に Objective-C++ を書いてから 1 年ほどで Apple がそれを変更したかどうかはわかりませんが、そうする理由はあまりないと思います。アナライザーは非常に役立つため、可能であれば、Objective-C を使用してください。

于 2012-06-03T00:15:45.823 に答える