我创建了一个新文件product.cpp + product.h,我创建了自己的方法和属性,我想在我的viewcontroller.m中使用这个类但是没有运行,我将viewcontroller.m的extensión更改为viewcontroller.mm但是没有运行,但是如果我将appDelegate.m的扩展名更改为appDelegate.mm,这是可以的并运行。
我的问题是,如果我想使用.cpp,我总是要将mi文件更改为.mm?
:/
答案 0 :(得分:0)
通常是的,.mm的文件扩展名告诉Xcode调用Objective-C ++编译器,而.m告诉编译器调用Objective-C编译器。您可以使用右侧的文件设置窗格基于每个文件设置编译器类型(因此您可以在.m文件上强制进行Objective-C ++编译),但这是非直观的,可能会混淆未来的维护者
如果你愿意考虑来自长期C ++和Objective-C用户的一些建议,我已经做了很多混合,并且随着时间的推移,它比它的价值更麻烦。如果纯粹坚持使用Objective-C,你会好得多,如果你有一些只是 要整合的C ++库,那么为它做一个C包装。
以前Xcode分析器只处理Objective-C文件,而不是Objective-C ++,所以你通过编写Objective-C ++文件会失去很多工具提供的价值。自从我上次写任何Objective-C ++以来,我不确定Apple是否在一年左右的时间内改变了它,但我想他们没有太多理由。如果可以的话,坚持使用Objective-C,因为分析仪非常有帮助。