我是语言多样性的全部,但目标C是疯了。所以我很好奇:使用Cocoa API等可以用C ++编写iPhone应用程序吗?
答案 0 :(得分:62)
尽管Objective-C最初确实看起来“疯狂”,但我鼓励你坚持下去。一旦你有一个“a-ha”的时刻,突然之间一切都开始变得有意义了。对我来说,花了大约2周的时间专注于Objective-C浓度来真正理解Cocoa框架,语言以及它们如何组合在一起。但是,一旦我真的“得到”它,它就非常令人兴奋。
听起来很陈词滥调,但这是真的。坚持下去。
当然,如果您引入C ++库或现有C ++代码,则可以将这些模块与Objective-C / Objective-C ++一起使用。
答案 1 :(得分:56)
简短的回答,是的,有点。您可以使用Objective-C ++,您可以在Apple Developer Connection.
阅读如果您已经了解C ++,那么学习Objective-C会非常简单,如果您决定尝试一下。关于该主题的更多信息也在ADC上。
答案 2 :(得分:41)
我使用Objective-C来一起制作UI 但代码的硬内容仍然是用C ++编写的。
这是Objective-C UI界面和处理事件的主要目的 它非常适用于此目的。
我仍然喜欢C ++作为代码的后端(但这主要是因为我喜欢C ++)你也可以很容易地将Objective-C用于应用程序的后端。
答案 3 :(得分:27)
首先,说Objective-C是“疯狂的”是幽默的 - 我有Bjarne Stroustrup C ++书坐在我身边,时间在1020页。关于Objective-C的Apple的PDF是141。
如果你想使用UIKit,你将很难用C ++做任何事情。任何符合Apple UI的严肃iPhone应用程序都需要用Objective-C编写UI部分。只有你在编写OpenGL游戏时才能完全坚持使用C / C ++。
答案 4 :(得分:14)
有了一些这方面的经验,你确实可以使用C ++代码作为你的“核心”代码,但你必须使用objective-C来处理任何iPhone特定的代码。
不要试图强迫Objective-C像C ++一样行事。起初,你觉得这是可能的,但是结果代码真的不适合Cocoa,你会对发生的事情感到困惑。花点时间正确学习,没有任何C ++,如何构建GUI和iPhone应用程序,然后链接到您的C ++基础。
答案 5 :(得分:3)
您必须使用Objective C与Cocoa API进行交互,因此别无选择。当然,您可以在幕后使用尽可能多的C ++(Objective C ++使这很容易)。
这确实是一种疯狂的语言,但它也是......一旦你习惯了它就会很有趣。 : - )
答案 6 :(得分:3)
我不确定C ++,但您绝对可以使用名为MonoTouch的产品在C#中编写iPhone应用程序。
有关MonoTouch Vs Obj-C的详细讨论,请参阅此帖子:How to decide between MonoTouch and Objective-C?
答案 7 :(得分:2)
我正在将用Java编写的计算密集型Android应用程序移植到iOS6。我这样做是通过将非UI部分从Java移植到C ++,在Obj-C中编写(最小)UI部分,并使用标准C / C ++技术将前者包装在(小)C接口中,以便它可以从Obj-C访问,它毕竟是C的超集。
到目前为止这是有效的,我没有遇到过任何陷阱。这似乎是一种合法的方法,因为Xcode允许您创建C ++类以及Obj-C类,并且一些官方示例代码以这种方式执行。我没有必要去任何官方支持的接口以外执行此操作。
考虑到Xcode中的界面构建器给你的帮助,即使有可能,在C ++中编写剩余的UI代码似乎也没什么好处,所以我的回答是你可以几乎所有应用程序都使用C ++,或者在适当/方便的时候使用C ++。
答案 8 :(得分:1)
是的但是,除非你编写非常简单的程序,否则认为你可以用一种语言编写各种程序是一个有缺陷的想法。 Objective C适用于Cocoa,因为C#适用于.NET,使用正确的工具进行正确的工作,尝试通过编写桥接代码使C ++与Cocoa交互,并尝试根据Cocoa要求使C ++代码行为不是一个好主意既不期望C ++ Objective C的表现是。您应该尝试布局应用程序的设计和体系结构,以便查看现有技能,并确定应使用哪种语言编写哪个部分,然后相应地构建。
答案 9 :(得分:0)
我目前正在编写一个名为Objective-X的Objective-C ++框架,这使得PURE C ++ iPHONE PROGRAMMING成为可能。你可以这样做:
#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 app& it w0rkX0rz就像一个魅力。 ;-)它很快就会在GoogleCode上推出。搜索Objective-X或访问http://infotronix.orgfree.com/objectivex约。一周后!
更新了(但显然不活跃)网址:http://code.google.com/p/objectivex/
答案 10 :(得分:0)
这可能有点偏离主题,但无论如何。您可以在iOS设备上直接编写c ++。查看Cpp Code ios应用程序 - http://cppcode.info。我相信以后学习c和c ++以及objective-c会有所帮助。