Objective-C ++中支持多少C ++

时间:2009-04-11 23:40:02

标签: iphone objective-c cocoa boost objective-c++

我想制作一款iPhone应用,但我打算用C ++制作这个框架。是否可以在Objective-C ++中使用模板之类的东西。我想问题是,我可以使用boost吗?

6 个答案:

答案 0 :(得分:13)

  

是否可以在Objective-C ++中使用模板之类的东西。

是的,但您需要注意如何在纯C ++层和Objective-C ++代码之间混合类型和接口。请记住图层之间的界限,您需要将std::string等类型转换为NSString,等等。

例如,您可以在纯C ++中实现核心游戏引擎,并且只需在Objective-C ++中实现控制器和GUI代码。然后Obj-C ++代码是纯C ++引擎和Cocoa之间的粘合剂。

  

我想真的问题是,我可以使用提升吗?

鉴于iPhone OS是OS X的一个子集,仍然提供完整的POSIX层,大多数Boost库应该正常工作。它应该就像编写Darwin代码一样。

Objective-C ++中有许多限制需要注意(直接来自Objective-C 2.0 Reference Guide):

  • 您不能使用Objective-C语法来调用C ++对象
  • 您无法向Objective-C对象添加构造函数或析构函数
  • 您不能使用此关键字并且可以互换使用
  • 类层次结构是分开的; C ++类不能从Objective-C类继承,并且Objective-C类不能从C ++类继承
  • 在Objective-C代码中引发的异常无法在C ++代码中捕获,相反,在C ++代码中抛出的异常无法在Objective-C代码中捕获。

答案 1 :(得分:10)

Objective C ++支持所有C ++。应该可以使用boost,但您可能需要移植一些与平台相关的东西。

答案 2 :(得分:4)

应该指出,你不能只在Objective-C ++中用C ++做你能做的所有事情。例如,您无法从Objective-C类调用C ++对象上的虚函数。一旦你调用了C / C ++函数,你就可以做任何你想做的事。

答案 3 :(得分:3)

Objective C ++是C ++的超集。你可以在C / C ++中做的一切都可以在Obj-C ++中完成。 “目标”部分包含一个Smalltalk-esque消息系统和C ++的其他附加功能。

答案 4 :(得分:2)

Objective C中的C ++对象不一定像C ++中那样。例如,构造函数和析构函数不会自动调用,并且(我认为)您无法实现虚拟方法...

答案 5 :(得分:1)

Boost很有用,但添加到项目中也是一个很大的开销。

在添加之前确保确实需要它。

对于正则表达式支持:RegexLite

其他一切: Cocoa