什么是Objective C ++?[关闭]


164

什么是Objective C ++,我可以在Xcode中使用这种语言吗?



接近原因“很难说出要问什么”是结束问题的较早原因。如今,原因是“范围太广”,因为OP实际上是两个不同的问题。首先,解释Objective C ++需要花几页的时间,其次,专门针对iOS的编码是使用Objective C完成的,而XCode是iOS开发的默认IDE,因此即使两者相关,它本身也是一个很大的问题。这些类型的问题应移至“文档”站点。
凯利·法国

1
@ DaveVoyles-MSFT:我很难认真对待一个人,他认为降低问题的投票权与机械化,工业化,有组织,系统性的超过600万人的谋杀是同一回事。
约尔格W¯¯米塔格

3
@JörgWMittag很抱歉,但您的回应已经被Stack Overflow主持人关闭,因为这不是一个真正的问题。
Dave Voyles

1
@ DaveVoyles-MSFT:“不是一个真正的问题”亲密投票的原因在几年前已被删除。
约尔格W¯¯米塔格

Answers:


156

Objective-C ++只是源代码,它混合了Objective-C类和C ++类(两个完全不相关的实体)。您的C ++代码将像以前一样工作,并且生成的可执行文件将与Objective-C运行时链接,因此您的Objective-C类也将工作。您绝对可以在Xcode中使用它-用.mm扩展名命名文件。

另外,您可能想阅读Apple在Objective-C ++上的文档(已删除,但已存档)


2
该链接中的限制部分对此进行了说明,并且值得一提的是,Objective-C ++不会将C ++功能添加到Objective-C类,也不会将Objective-C功能添加到C ++类。例如,您不能使用Objective-C语法来调用C ++对象,不能将构造函数或析构函数添加到Objective-C对象,并且不能使用this和self互换使用关键字。类层次结构是独立的。C ++类不能从Objective-C类继承,而Objective-C类不能从C ++类继承。此外,不支持多语言异常处理
ass

33

Objective-C ++是Objective-C(可能与Cocoa Framework结合使用),具有链接C ++代码(可能的类)的能力。

是的,您可以在Xcode中使用此语言为Mac OS X,iPhone / iPodTouch,iPad开发。效果很好。

使用Objective-C ++,您不必在项目中做任何奇怪的事情。只需使用扩展名.mm(而不是.m)来命名您的Objective-C文件,就可以了。

这是我最喜欢的架构:用C ++开发我的游戏/应用程序的基类库,因此我可以在其他平台(Windows,Linux)上重用它,并将Cocoa仅用于iPhone / iPad UI特定的东西。


10
它不是与C ++ 链接 -您是说混合吗?
Georg Fritzsche 2010年

6

如果您想使用Objective-c ++但又不想命名文件,请查看.mm我对类似问题的回答

无需将任何.m更改为.mm或类似的东西,如果您单击项目,请单击标记->构建设置,直到“ LLVM GCC 4.2-语言”(新的xcode表示“ Apple LLVM编译器4.2”)为止 将看到将源代码更改为Objective-C ++的“ 编译源代码”


4
虽然您可以执行此操作,但是它不那么可移植,可能会与试图维护您的代码(.s是标头,.r是实现文件)的人混淆。
Grady Player

您从哪里提取.s和.r?您可以将标准.m用作方法文件,并将.h用作标题,就像使用普通的Objective-c一样。
约翰·里塞尔瓦托

我只是说.m意味着某些东西,而使其成为其他东西是不标准的。
Grady Player

在Objective-c中使用std向量(一种c ++ std),我需要打开Objective-c ++。对我而言,仅在我的Objective-C代码中使用向量来创建其他文件类型扩展名就没有意义。
John Riselvato

13
绝对它会,它会使用“COUT”或任何不属于C的一部分
格雷迪玩家
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.