Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone的非目标C编程状态如何?_Iphone_Objective C - Fatal编程技术网

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

在花了三周时间学习Objective-C和Cocoa编程之后,我的任务是为iPhone开发寻找替代方案

我知道两个现有的替代方案和一个未来的可能性

C#

  • (以前的MonoTouch)是一个C#.NET实现,带有iPhone特定功能的绑定,如触摸屏和加速计。它与Xcode和Interface Builder集成,还允许进行自定义Objective-C绑定
Java

  • 生成从J2ME源编译的iPhone C++代码。它还提供触摸屏和加速计绑定
Flash/ActionScript 3

  • Adobe宣布将允许在iPhone上部署Flash应用程序。目前还没有提供细节
我想知道是否有人有这些方面的经验。如果可能的话,我们公司正在考虑使用这些解决方案重新使用代码,而不是在Objective-C中重新编写相同的功能


编辑:我知道不使用Objective-C和提供的框架的缺点。我希望有经验的人提供可能的解决方案,而不是Objective-C更好的原因。

我对iPhone上的非ObjC语言表示怀疑。这不一定是因为有一些巨大的技术障碍需要克服(你可以在iPhone上编译任何你想要的东西,甚至可以通过一些调整让它运行),但还有两个重要原因:

  • 框架。虽然您列出的东西有触摸屏和加速计绑定,但您很可能缺少蓝牙连接和游戏套件、音频框架、应用内购买等东西。用另一种语言复制苹果提供的所有东西是相当困难的,如果你选择一种不同的方式,然后最终需要其中一种框架,你可能会被卡住
  • 应用程序提交。如果你想在App Store上获得应用程序,你可能应该坚持使用ObjC。众所周知,苹果对他们所允许的内容非常挑剔,使用不同的语言可能会让一些评论者产生错误的印象
您在代码签名/证书等方面也会遇到很多麻烦,更不用说调试了(MonoTouch将调试宣传为一种功能,而不是在语言中被视为理所当然的东西,这让我感到奇怪)

总而言之,如果可以的话,我会坚持使用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应用程序二进制规则、服务条款等。苹果在应用程序商店中扮演仁慈的独裁者并不为人所知。直到它被证明是苹果公司认可的方法,警告建设者

我建议考虑使用混合解决方案

由于Objective-c的灵活性,您可以在Objective-c中实现您的接口,并在几乎任何其他东西中实现您的数据模型。实际上,您可以使用interface Builder绘制接口,这样您在Objective-c中的实际编码就非常少了。