是否可以用C ++对iPhone进行编程


Answers:


57

简短的回答,是的。您可以使用Objective-C ++,您可以在Apple Developer Connection上了解到

如果您已经了解C ++,那么如果您决定尝试一下,那么学习Objective-C将会非常简单。有关该主题的更多信息,请访问ADC。


1
您是否可以推荐一个针对经验丰富的C ++程序员的网站或书籍来学习Objective-C?我设法将一些测试应用程序融合在一起,但是我发现语法有些倒退,并且我确信我所做的事情只是由于缺乏对Objective-C的了解而导致了内存泄漏等
Lea Hayes

3
@LeaHayes一本名为“从C ++到Objective-C”的免费书籍。假设您了解C ++,然后告诉您在Objective-C中如何进行不同的处理。 pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf(这是原始法语的英语翻译)
olafure 2012年

61

尽管Objective-C最初确实确实看起来很“疯狂”,但我还是鼓励您坚持使用它。一旦您有了“ a-ha”的时刻,突然之间一切都变得有意义了。对我来说,花了大约2周的时间专注于Objective-C,才能真正理解Cocoa框架,语言以及它们如何融合在一起。但是,一旦我真正“了解”了它,那就非常令人兴奋了。

听起来陈词滥调,但这是事实。坚持到底。

当然,如果要引入C ++库或现有的C ++代码,则可以将这些模块与Objective-C / Objective-C ++一起使用。


42

我使用Objective-C将UI拍打在一起。
但是代码的硬胆仍然是用C ++编写的。

这是Objective-C UI界面和处理事件的主要目的。
为此,它非常有用。

我仍然喜欢C ++作为代码的后端(但这主要是因为我喜欢C ++),您也可以很容易地将Objective-C用作应用程序的后端。


9
@Spanky:我该怎么做。您可以在* .m文件中写入普通的C。您可以在* .mm文件(Objective-C ++)中编写普通的C ++。在Objective-C(++)文件中,您可以#include <XXX>像C / C ++文件一样使用常规文件。
马丁·约克

28

首先,说Objective-C是“疯狂的”是幽默的-我坐在Bjarne Stroustrup C ++的书旁,时长1020页。苹果在Objective-C上的PDF为141。

如果您想使用UIKit,那么用C ++做任何事情都会非常非常困难。任何符合Apple UI的严肃的iPhone应用程序都需要将其UI部分用Objective-C编写。只有编写OpenGL游戏,您才能几乎完全坚持使用C / C ++。


30
从什么时候开始减少文件记录是一件好事?“ C ++编程语言”非常详尽,并且还记录了STL。
Timmmm 2010年

2
@Timmmm:自从K&R在他们的书的最前面提到这一点以来。Objective-C是一种比C ++小得多的语言,具有许多相同的优点(以及更多的优点)。当然,一切都需要权衡。但是,很少的文档资料使Obj-C对于有经验的C(或C ++)人员来说非常容易上手。
本·佐托

62
抱歉,ObjC太疯狂了。坚持以完全不同的方式声明函数,即使用括号。这是没有好处的不同。他们本可以起草相同的有效语言而无需使用可笑的语法。他们选择不这样做。因此,这太疯狂了。
大黄

13
@Rhubarb-尽管我喜欢Objective-C,但我必须同意,奇怪的语法毫无用处。
拉斐尔

@Rhubarb,是的,请记住,苹果公司正是出于这种疯狂,而苹果公司的独特之处在于与众不同。
SeanRamey

14

有了一些经验,您确实可以将C ++代码用作“核心”代码,但对于任何特定于iPhone的东西,都必须使用Objective-C。

不要试图强迫Objective-C像C ++一样工作。乍一看,这似乎是可能的,但是生成的代码确实无法在Cocoa上很好地工作,并且您对所发生的事情会感到非常困惑。花些时间在没有C ++的情况下正确学习如何构建GUI和iPhone应用程序,然后链接到C ++库。


3

您必须使用Objective C来与Cocoa API交互,所以别无选择。当然,您可以在后台使用任意多的C ++(使用目标C ++可以轻松实现)。

这确实是一种疯狂的语言,但是,一旦您习惯了它,它也...会很有趣。:-)



2

我正在将用Java编写的计算密集型Android应用程序移植到iOS6。我这样做是通过将非UI部分从Java移植到C ++,在Obj-C中编写(最小)UI部分,然后使用标准C / C ++技术将前者包裹在(小的)C接口中来实现的,可以从Obj-C访问它,毕竟它是C的超集。

到目前为止,这一直有效,而且我还没有遇到任何麻烦。这似乎是一种合法的方法,因为Xcode允许您创建C ++类和Obj-C类,并且某些官方示例代码以这种方式进行操作。我不必非要使用任何官方支持的界面即可。

考虑到Xcode的界面构建器提供的帮助,即使有可能,用C ++编写剩余的UI代码似乎也不会有太大收获,所以我的回答是,您可以将C ++用于几乎所有您的应用,或者您认为合适/方便的应用。


2

是的,但是除非您正在编写非常简单的程序,否则认为可以用一种语言编写各种程序是一个错误的想法。目标C适用于Cocoa,C#适用于.NET,使用正确的工具完成正确的工作,尝试通过编写桥接代码使C ++与Cocoa交互,并尝试使C ++代码根据Cocoa的要求进行操作,这既不是一个好主意,也不期望C ++目标C的性能是。您应该尝试根据现有技能来布局应用程序的设计和体系结构,并确定应该用哪种语言编写哪个部分,然后相应地构建。


0

我目前正在编写一个名为Objective-X的Objective-C ++框架,这使PURE C ++ iPHONE编程成为可能。您可以这样:

#import "ObjectiveX.h"

void GUIApplicationMain() {    
    GUIAlert Alert;
    GUILabel Label;
    GUIScreen MainScreen;

    Alert.set_text(@"Just a lovely alert box!");
    Alert.set_title(@"Hello!");
    Alert.set_button(@"Okay");
    Alert.show();

    Label.set_text(@"Ciao!");
    Label.set_position(100, 200, 120, 40);

    MainScreen.init();
    MainScreen.addGUIControl(Label.init());    
}

并使用GCC的适当命令行选项进行编译。我已经像魅力一样编译了这个helloworld应用程序&w0rkX0rz。;-)即将在GoogleCode上推出。搜索Objective-X或访问http://infotronix.orgfree.com/objectivex。一周之后!

更新(但显然无效)的URL:http : //code.google.com/p/objectivex/


4
为什么不等到实际发布后再发布呢?
乔治·弗里茨彻

8
现在两个链接都是404
Zhao Xiang

1
根据SourceForge的说法:“自2014年1月24日起,该项目不再处于积极开发中。” sourceforge.net/projects/objectivex
2014年

0

可能有点题外话,但无论如何。您可以直接在iOS设备上编程c ++。退房CppCode iOS应用- http://cppcode.info。我认为这有助于以后学习c和c ++以及Objective-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.