在Objective-C中调用C ++类和方法

时间:2012-06-27 21:59:28

标签: c++ objective-c ios native-code

我正在开发一个iOS应用程序,其中大部分后端已经在C ++中完成。界面显然在Obj-C中,我不知道如何同时使用这两种语言。

基本上,我希望在Objective-C文件中有一个Song数据库,而不是对该歌曲数据库/对象执行这些操作:

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文件中执行此操作?

1 个答案:

答案 0 :(得分:4)

创建一个扩展名为.mm的文件,编译器会认为它是一个Objective-C ++源代码。这将允许您混合使用C ++和Objective-C代码。

基本上,您可以调用C ++函数并声明具有C ++类类型的变量。

在.mm文件中,您应该包含C ++代码的.h文件,然后在Objective-C中使用C ++的声明。

一个足够的限制:您不能从Objective-C接口继承C ++类,反之亦然。

当然,“最佳”部分是需要对C ++对象进行手动内存管理(参见rickster的评论)。没有自动垃圾收集,所以当你声明指针并分配一些内存时,你必须在以后解除分配。