using c++ (.cpp) with objective-c (.m)

using c++ (.cpp) with objective-c (.m)

本文关键字:objective-c with cpp c++ using      更新时间:2023-10-16

对不起,我的英语不好。我正在尝试在我的iOS项目中使用纯c ++代码,但我有以下问题:

我创建了一个新的文件产品.cpp + product.h,我创建了他自己的方法和属性,我想在我的 viewcontroller.m 中使用这个类但不运行,我将 viewcontroller.m 的扩展更改为 viewcontroller.mm 但不运行,但如果我将 appDelegate.m 的扩展更改为 appDelegate.mm 这可以运行。

我的问题是,如果我想使用.cpp,我总是必须将 mi 文件更改为 .mm?

:/

一般来说,.mm的文件扩展名告诉Xcode调用Objective-C++编译器,而.m告诉编译器调用Objective-C编译器。 您可以使用右侧的文件设置窗格按文件设置编译器类型(因此您可以强制对.m文件进行Objective-C++编译),但这并不直观,并且可能会使未来的维护者感到困惑。

如果你愿意考虑一个长期C++和Objective-C用户的建议,我已经做了很多两者的混合,随着时间的推移,它比它的价值更麻烦。 如果纯粹坚持Objective-C,你会好得多,如果你有一些C++库,你只需要集成,那就为它做一个C包装器。

过去,Xcode analyzer只适用于Objective-C文件,而不是Objective-C++,因此通过编写Objective-C++文件,您将失去该工具提供的很多价值。 我不确定自从我上次写任何Objective-C++以来,苹果是否在一年左右的时间里改变了它,但我想他们没有太多理由这样做。 如果可以的话,坚持使用Objective-C,因为Analyzer非常有用。