iPhone的非目标C编程状态如何?
在花了三周时间学习Objective-C和Cocoa编程之后,我的任务是为iPhone开发寻找替代方案 我知道两个现有的替代方案和一个未来的可能性 C#iPhone的非目标C编程状态如何?,iphone,objective-c,Iphone,Objective C,在花了三周时间学习Objective-C和Cocoa编程之后,我的任务是为iPhone开发寻找替代方案 我知道两个现有的替代方案和一个未来的可能性 C# (以前的MonoTouch)是一个C#.NET实现,带有iPhone特定功能的绑定,如触摸屏和加速计。它与Xcode和Interface Builder集成,还允许进行自定义Objective-C绑定 Java 生成从J2ME源编译的iPhone C++代码。它还提供触摸屏和加速计绑定 Flash/ActionScript 3 Ado
- (以前的MonoTouch)是一个C#.NET实现,带有iPhone特定功能的绑定,如触摸屏和加速计。它与Xcode和Interface Builder集成,还允许进行自定义Objective-C绑定
- 生成从J2ME源编译的iPhone C++代码。它还提供触摸屏和加速计绑定
- Adobe宣布将允许在iPhone上部署Flash应用程序。目前还没有提供细节
编辑:我知道不使用Objective-C和提供的框架的缺点。我希望有经验的人提供可能的解决方案,而不是Objective-C更好的原因。我对iPhone上的非ObjC语言表示怀疑。这不一定是因为有一些巨大的技术障碍需要克服(你可以在iPhone上编译任何你想要的东西,甚至可以通过一些调整让它运行),但还有两个重要原因:
- 框架。虽然您列出的东西有触摸屏和加速计绑定,但您很可能缺少蓝牙连接和游戏套件、音频框架、应用内购买等东西。用另一种语言复制苹果提供的所有东西是相当困难的,如果你选择一种不同的方式,然后最终需要其中一种框架,你可能会被卡住
- 应用程序提交。如果你想在App Store上获得应用程序,你可能应该坚持使用ObjC。众所周知,苹果对他们所允许的内容非常挑剔,使用不同的语言可能会让一些评论者产生错误的印象
更新:2010年9月MonoTouch看起来不错,但速度非常慢。我在上一代MacBook上使用XCode已经有一段时间了(ca 2007),它速度快,响应快。上周我下载了MonoTouch,因为我想将一个现有的大型Mono代码库转换为在iPhone上运行,虽然它安装和运行良好,但使用它是非常痛苦的,因为IDE中的一切都是模糊和无响应的
YMMV,如果你有更新更强大的工具包,但这不是好兆头。Unity for iPhone是一个非ObjectiveC开发的好平台 它不仅仅适用于游戏,如果您需要.NET或其他脚本语言支持,这可能是一个好方法
IMHO:MonoTouch比一个好的IB+ObjectiveC堆栈更有用,即使有ObjectiveC的一些学习开销。如果不选择Objective-C,您将在几个方面受到损失,因为它是苹果唯一支持的环境 苹果的所有文档、示例代码、工具链等都假设您使用的是Objective-C。您将无法真正使用代码级支持事件。任何新的框架都必须针对您的环境进行包装,这也会引入新的bug源
对我来说,在iPhone上使用Objective-C以外的东西会带来很大的伤害。我也在寻找Objective-C的替代品,因为为我编写它根本没有效率。我目前正在研究XMLVM()作为一种编写Java的方法,然后将其变成Objective-C源代码。这个解决方案有很多优点,但在我看来,最大的优点是它生成Objective-C源代码,因此不会阻止您将核心应用程序附加到尚未使用XMLVM映射的API。我的目的是用Java编写我的应用程序的核心,然后将其移植到IPhone和Android上,然后在Objective-C或Android Java上添加平台特定的功能 关于flash编译器,可能存在一些问题:
- 已编译的二进制文件将其所有资源捆绑到已编译的应用程序中,而使用XCode,已编译的二进制文件将所有资源捆绑为单个文件。这可能会占用您的空间,因为苹果在某些资源(PNG等)上使用了压缩技术,以从另一端获取较小的二进制文件。更重要的是,操作系统提供的任何资源处理优化都不能用于flash二进制文件中的资源
- 关于flash编译的iPhone二进制文件的可接受性,已经有一些讨论。Adobe认为它们是合法的二进制文件,不违反iPhone应用程序二进制规则、服务条款等。苹果在应用程序商店中扮演仁慈的独裁者并不为人所知。直到它被证明是苹果公司认可的方法,警告建设者