使用C ++进行iPhone应用程序开发?

时间:2011-03-14 04:10:05

标签: iphone c++ objective-c ios4

我在Objective-C(用于iPhone)中编写了一些小程序,但最终我想用C ++编写程序。 (我发现它更容易。)

如果是这样,我将如何:

  1. 用C ++管理内存? (C ++是否有我需要使用的类似于发布的命令?)
  2. Intermix C ++和Objective-C编码? (甚至,我应该吗?)
  3. 像字符串一样获取C ++对象,并将其转换为NSString?
  4. 谢谢! 德里克

2 个答案:

答案 0 :(得分:1)

  1. 是。 C ++有一个delete关键字,但它只适用于你用new创建的对象(对于惯用的C ++代码,它不是每个对象)。 C ++也没有内置的引用计数,只有纯粹的所有权。

  2. 如果您创建一个扩展名为.mm的源文件,它将编译为Objective-C ++,它允许您混合使用Objective-C和C ++代码。

  3. 对于字符串,您可以致电std::string::c_str()以获取可以传递到+[NSString stringWithUTF8String:]的字符串。

  4. 我的两分钱:如果你觉得C ++比Objective-C容易得多而且你对C ++中的内存管理一无所知,你应该花费相当多的时间学习纯C ++;如果你不知道自己在做什么,那就非常容易用C ++进行自拍。

答案 1 :(得分:0)

  

用C ++管理内存? (C ++是否有我需要使用的类似于发布的命令?)

c ++使用newdelete。特别是,c ++程序更喜欢使用范围限制资源管理(SBRM)。使用这些容器时,管理动态分配很容易。但是,引用计数目前尚未内置于该语言中 - 您可以将boost www.boost.org用于更高级的指针容器,包括那些提供引用计数的容器。

  

Intermix C ++和Objective-C编码? (甚至,我应该吗?)

您可以使用扩展名.mm.M或使用编译器标记轻松完成。请注意,您不应仅仅将所有内容都设置为objc ++ - 这会损害您的构建时间。还要注意,有一些限制,包括无法将c ++类型子类化为objc类型,反之亦然。任何理智的c ++ dev将启用的另一个重要标志是当你在objc类中使用c ++类型作为变量时生成c ++构造函数/析构函数调用的标志。否则,你只会崩溃,被迫使用pimpl,或者必须手动构建/破坏所有的c ++实例(如objc类型中的ivars)。这意味着您使用的这些类型都需要默认构造函数。你可以混合使用这些语言,如果你喜欢的话可以这么做。还有一些关于在苹果文档中混合它们的注释,但那些是重要的...哦,小心隔离你的例外(你也必须用objc)。

  

获取C ++对象,如字符串,并将其转换为NSString?

见John Calsbeek的回应

祝你好运