oc的理解以及oc与c++的混编

作者: yi叶知秋 | 来源:发表于2016-05-27 00:25 被阅读2670次

oc是有c所衍生出来的一门新的语言,是c的一个超级,继承了c语言的特性。但与c不同的是,oc是面向对象的一门语言,具有面向对象的语言特性,如:封装,继承,多态。
oc语言的优点:支持类别 可与c++进行混编
oc与c++相比 不支持命名空间 不支持运算符重载 不支持多继承

iOS开发中,在XCode下混合编译 C++/Object-C
在iOS的开发中,Apple建立的库基本都是用Objective-C写的,所以在这里的C++指的其实
是Objective-C++。
在做混合编译之前一定要把编译器的Compile Sources As选项改为Objective C++,如下图所示:

编译器修改Compile Sources As.png

注意:Xcode需要源文件以".mm"为扩展名,这样才能启动编译器的Objective-C++扩展。

一般我们在xcode里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,但是这样在多人开发,别人修改路径时会出现问题。所以我们在修改User Header Search Paths这个选项的时候使用
"$(SRCROOT)/当前工程名字/需要包含头文件所在文件夹"
将上面的双引号里面的字符串拷贝之后,你会发现这个“$(SRCROOT)”,会自动变成当前工程所以的目录。
这样发给别人,别人也不需要去修改路径了。

相关文章

网友评论

  • scfhao:如果把Build settings里的Compile Sources As选项改为Objective C++,就是把全部文件当Objective C++编译了吧,这种情况下同时包含Objective-C和C++的文件就不需要把扩展名改为mm了。如果Compile Sources As设置为According to File Type,这种情况下才会根据混编文件的扩展名为mm而选用Objective C++编译器。
    scfhao:方便不应该是最先考虑的选项,如果只考虑方便,Xcode就该把Objective C++设为默认编译方式了,那样Xcode用户再也不用管什么C++混编的事了
    scfhao:@OldLogan 没说更方便,你把Compile Sources As选项为Objective C++后,普通没混编的文件也会按照Objective C++的方式编译,这显然不是想要的。
    默认情况(即Compile Sources As设置为According to File Type)扩展名为mm而选用Objective C++方式编译,不需要向你文中所说再改Compile Sources As设置了。
    假能干:根据你的回复,如果更改了Compile Sources As选项为Objective C++,就不需要更改扩展名。这样更为方便?

本文标题:oc的理解以及oc与c++的混编

本文链接:https://www.haomeiwen.com/subject/chixdttx.html