使用C++;? 我在Objto-C(iPhone)中编写了一些小程序,但最终我想主要是用C++编写程序。(我只是觉得简单多了。)

使用C++;? 我在Objto-C(iPhone)中编写了一些小程序,但最终我想主要是用C++编写程序。(我只是觉得简单多了。),iphone,c++,objective-c,ios4,Iphone,C++,Objective C,Ios4,如果这是真的,我将如何: 在C++中管理内存?(C++是否有一个类似的命令我需要使用?) 混合C++和Objto-C编码?(甚至,我应该吗?) 将一个C++对象,像一个字符串,并转换成NString? 谢谢大家!! 德里克 对。C++有一个删除>代码>,但它只适用于用“代码>新< /Calp>创建的对象(对于惯用的C++代码,不是每个对象都适用)。C++也没有内置的引用计数,只是纯所有权。 > p>如果使用代码> .mm/c>扩展,则编译为Objto-C++,这允许您混合Objto-C和C++

如果这是真的,我将如何:

在C++中管理内存?(C++是否有一个类似的命令我需要使用?)
  • 混合C++和Objto-C编码?(甚至,我应该吗?)
  • 将一个C++对象,像一个字符串,并转换成NString? 谢谢大家!! 德里克

  • 对。C++有一个<代码>删除>代码>,但它只适用于用“代码>新< /Calp>创建的对象(对于惯用的C++代码,不是每个对象都适用)。C++也没有内置的引用计数,只是纯所有权。

  • > p>如果使用<>代码> .mm/c>扩展,则编译为Objto-C++,这允许您混合Objto-C和C++代码。

  • 对于字符串,您可以调用
    std::string::c_str()
    来获取可以传递到
    +[NSString stringWithUTF8String:][/code>中的字符串

  • 我的两分钱:如果你觉得C++比Objto-C容易很多,你对C++中的内存管理一无所知,你应该花大量的时间学习纯C++;如果你不知道自己在做什么,那么在C++中用脚射击是非常容易的。

    C++中的内存管理?(C++是否有一个类似的命令我需要使用?) c++使用

    new
    delete
    。具体来说,C++程序更喜欢使用范围绑定资源管理(SBRM)。使用这些容器时,管理动态分配非常容易。然而,引用计数目前还没有内置到语言中——您可以使用boost来实现更高级的指针容器,包括那些提供引用计数的容器

    <>混合C++和Objto-C编码?(甚至,我应该吗?)

    您可以通过使用扩展名
    .mm
    .M
    或使用编译器标志轻松完成。请注意,您不应该只启用objc++的所有功能——这会影响您的构建时间。还要注意的是,有一些限制,包括无法将C++类型分为Objc类型,反之亦然。任何明智的C++开发工具都会启用一个重要标志,即当你在Objc类中使用C++类型作为变量时,C++会生成构造函数/析构函数调用。否则,您将崩溃,被迫使用PIPML,或者不得不手动构建/销毁所有C++实例(如Objs类型的IVAR)。这意味着您使用的这些类型都需要默认构造函数。你可以混合各种语言,如果你喜欢的话,也可以这样做。关于在苹果的文档中混合它们还有一些注意事项,但这些是重要的。。。哦,还要小心隔离您的异常(您也必须使用objc)

    将一个C++对象,像一个字符串,并将其转换成NString?

    参见John Calsbeek的回答


    祝你好运

    谢谢你的快速回复,约翰!我会听从你的建议。我强烈建议坚持使用标准开发环境,即Objective-C和Cocoa Touch。用一种似乎“更容易”的语言编写应用程序可能很有诱惑力,但最好使用环境设计的语言,因为理念是一致的,有更多的文档/帮助可用,您不必担心转换任何内容。要编写一个好的iOS应用程序,你必须接受苹果的理念,Objective-C就是这一理念的一部分。