我全力支持语言多样性,但是目标C太疯狂了。所以我很好奇:使用Cocoa API等时是否可以用C ++编写iPhone应用程序?
我全力支持语言多样性,但是目标C太疯狂了。所以我很好奇:使用Cocoa API等时是否可以用C ++编写iPhone应用程序?
Answers:
简短的回答,是的。您可以使用Objective-C ++,您可以在Apple Developer Connection上了解到。
如果您已经了解C ++,那么如果您决定尝试一下,那么学习Objective-C将会非常简单。有关该主题的更多信息,请访问ADC。
尽管Objective-C最初确实确实看起来很“疯狂”,但我还是鼓励您坚持使用它。一旦您有了“ a-ha”的时刻,突然之间一切都变得有意义了。对我来说,花了大约2周的时间专注于Objective-C,才能真正理解Cocoa框架,语言以及它们如何融合在一起。但是,一旦我真正“了解”了它,那就非常令人兴奋了。
听起来陈词滥调,但这是事实。坚持到底。
当然,如果要引入C ++库或现有的C ++代码,则可以将这些模块与Objective-C / Objective-C ++一起使用。
我使用Objective-C将UI拍打在一起。
但是代码的硬胆仍然是用C ++编写的。
这是Objective-C UI界面和处理事件的主要目的。
为此,它非常有用。
我仍然喜欢C ++作为代码的后端(但这主要是因为我喜欢C ++),您也可以很容易地将Objective-C用作应用程序的后端。
#include <XXX>
像C / C ++文件一样使用常规文件。
首先,说Objective-C是“疯狂的”是幽默的-我坐在Bjarne Stroustrup C ++的书旁,时长1020页。苹果在Objective-C上的PDF为141。
如果您想使用UIKit,那么用C ++做任何事情都会非常非常困难。任何符合Apple UI的严肃的iPhone应用程序都需要将其UI部分用Objective-C编写。只有编写OpenGL游戏,您才能几乎完全坚持使用C / C ++。
您必须使用Objective C来与Cocoa API交互,所以别无选择。当然,您可以在后台使用任意多的C ++(使用目标C ++可以轻松实现)。
这确实是一种疯狂的语言,但是,一旦您习惯了它,它也...会很有趣。:-)
我不确定C ++,但是您绝对可以使用名为MonoTouch的产品用C#编写iPhone应用程序。
您可以查看此帖子,以获取有关MonoTouch VS Obj-C的详细讨论:如何确定MonoTouch和Objective-C?
我正在将用Java编写的计算密集型Android应用程序移植到iOS6。我这样做是通过将非UI部分从Java移植到C ++,在Obj-C中编写(最小)UI部分,然后使用标准C / C ++技术将前者包裹在(小的)C接口中来实现的,可以从Obj-C访问它,毕竟它是C的超集。
到目前为止,这一直有效,而且我还没有遇到任何麻烦。这似乎是一种合法的方法,因为Xcode允许您创建C ++类和Obj-C类,并且某些官方示例代码以这种方式进行操作。我不必非要使用任何官方支持的界面即可。
考虑到Xcode的界面构建器提供的帮助,即使有可能,用C ++编写剩余的UI代码似乎也不会有太大收获,所以我的回答是,您可以将C ++用于几乎所有您的应用,或者您认为合适/方便的应用。
是的,但是除非您正在编写非常简单的程序,否则认为可以用一种语言编写各种程序是一个错误的想法。目标C适用于Cocoa,C#适用于.NET,使用正确的工具完成正确的工作,尝试通过编写桥接代码使C ++与Cocoa交互,并尝试使C ++代码根据Cocoa的要求进行操作,这既不是一个好主意,也不期望C ++目标C的性能是。您应该尝试根据现有技能来布局应用程序的设计和体系结构,并确定应该用哪种语言编写哪个部分,然后相应地构建。
我目前正在编写一个名为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/
可能有点题外话,但无论如何。您可以直接在iOS设备上编程c ++。退房CppCode iOS应用- http://cppcode.info。我认为这有助于以后学习c和c ++以及Objective-c。