一个文件,三个世界
从一个三语翻译说起
联合国有一场特殊的会议。
中国代表说中文(C#)。美国代表说英文(C语言)。日本代表说日语(Objective-C)。
普通翻译只会两种语言。但这场会议需要一个同时会三种语言的翻译。
中国代表说了一句中文,翻译听懂了,转成英文格式的句子结构,再用日语的词汇表达出来,告诉日本代表。
日本代表回了一句日语,翻译听懂了,转成英文格式,再用中文告诉中国代表。
这个三语翻译就是.mm文件。
.mm是Objective-C++文件。它能写C代码,能写C++代码,能写Objective-C代码。三种语言在同一个文件里共存。
C#通过P/Invoke只能调用C函数。iOS的API是Objective-C写的。.mm文件站在中间,左手接C函数调用,右手调Objective-C的API。
它是桥。是翻译。是两个世界之间唯一的通道。
一、为什么是.mm?
1.1 文件扩展名的秘密
.c → 纯C代码 .cpp → C++代码 .m → Objective-C代码 .mm → Objective-C++代码(C + C++ + Objective-C 三合一)