1

私は、ほとんどのバックエンドが既に C++ で行われている iOS アプリケーションに取り組んでいます。インターフェイスは明らかに Obj-C にあり、2 つの言語を同時に一緒に使用する方法がわかりません。

基本的にSong、Objective-C ファイルにデータメンバーが必要であり、その曲のデータメンバー/オブジェクトに対して次のようなアクションを実行します。

Song song("Hardcore Beatzzz", "RockzStarsz", 60);
song.setTimeSig(4,4);

Track synthTrack;
synthTrack.setTrackName("sinussynth #1");

Note note3(880, 100, 8, 1, 17);
synthTrack.addNote(note3);

playlist.addTrack(synthTrack);

明らかに、これはすべて C++ ですが、Objective-C ファイル内でこれを行うにはどうすればよいでしょうか?

4

1 に答える 1

4

拡張子が .mm のファイルを作成すると、コンパイラはそれを Objective-C++ ソース コードとして扱います。これにより、C++ と Objective-C のコードを混在させることができます。

基本的に、C++ 関数を呼び出して、C++ クラス型を持つ変数を宣言できます。

.mm ファイルには、C++ コードの .h ファイルを含めてから、Objective-C で C++ の宣言を使用する必要があります。

十分な制限が 1 つあります。Objective-C インターフェイスから C++ クラスを継承することはできず、その逆も同様です。

もちろん、「最良」の部分は、C++ オブジェクトの手動メモリ管理が必要なことです (rickster のコメントを参照)。自動ガベージ コレクションがないため、ポインターを宣言してメモリを割り当てると、後でそれらの割り当てを解除する必要があります。

于 2012-06-27T22:03:54.817 に答える