为什么在 Mailcore2 示例中 'MCOMessageView' 文件是一个 c++ 文件而不是 objective c 文件?

Why In Mailcore2 Sample the 'MCOMessageView' file is a c++ file instead of objective c one?

我正在检查 mailcore 2 示例演示的源代码。 IOS 项目有一个 class 'MCOMessageView.mm'。它是一个非常好的帮手 class,带有一个 webview 和一些用于 html 渲染的委托。那么为什么使用 'mm' 作为其文件扩展名,因为它不包含任何 C++ 代码。

一些习惯于处理 ObjC++ 的开发人员默认为他们的 ObjC class 使用 .mm 扩展名,即使不需要 C++ 代码,这样他们以后可以在需要时使用 ObjC++。

MailCore 默认使用 ObjC++,因此 class 默认使用 .mm 扩展名,即使当时没有 C++ 代码,也可以在将来添加。

它实际上不需要花费 运行 时间,所以它.. 只是一种做事方式。自 LVVM 以来,它在构建时的成本很小

另一种可能性是它们在文件的先前版本中是 C++,并且在提交后提交,C++ 代码被替换并且他们没有费心重命名 class 因为他们仍然可以添加一些 C++ 代码将来,他们希望解放双手。

使用 .mm 的原因是它会提示 Xcode 它需要 C++ 运行时才能 link 最终的二进制文件。 如果我使用 .m,我将不得不明确传递一个标志。