MonoTouch是iPhone开发的可行平台吗?

MonoTouch是iPhone开发的可行平台吗?,iphone,mono,xamarin.ios,Iphone,Mono,Xamarin.ios,MonoTouch似乎是iPhone开发的一个很好的平台,但我担心它是否会部署到苹果商店。iTunes上目前有没有用它构建的应用程序的例子 我们正在为iPhone启动一个新项目,将整个堆栈保存在C#中会很好,但我们不想因为MonoTouch而承担被苹果商店拒绝的风险 我读过几款目前使用mono(非MonoTouch)制作3D图形的游戏,但是找不到关于MonoTouch的任何信息。MonoTouch社区正在维护一个今天在苹果商店中可用的,并且是用它编写的。游戏开发平台正在使用相同的MonoTouc

MonoTouch似乎是iPhone开发的一个很好的平台,但我担心它是否会部署到苹果商店。iTunes上目前有没有用它构建的应用程序的例子

我们正在为iPhone启动一个新项目,将整个堆栈保存在C#中会很好,但我们不想因为MonoTouch而承担被苹果商店拒绝的风险


我读过几款目前使用mono(非MonoTouch)制作3D图形的游戏,但是找不到关于MonoTouch的任何信息。

MonoTouch社区正在维护一个今天在苹果商店中可用的,并且是用它编写的。

游戏开发平台正在使用相同的MonoTouch代码库进行C#支持(并为该项目做出了贡献)。

在我的手机上点击这个,所以我要简短一点,对此表示歉意

无论如何:

-如前一个回答所述,已经有MonoTouch应用发布到应用商店。不管是两个还是一个巴吉利昂都不重要。1和0之间的差别是无限的——答案是明确的:是的,苹果将批准MonoTouch应用程序

-MonoTouch遵守苹果的规则。它吐出本地的碎片。没有对代码的解释,也没有任何抖动。您的MonoTouch应用程序与其他任何应用程序一样是一个捆绑包,它与其他应用程序一样包含一个本地二进制文件

-MonoTouch应用程序比使用苹果的堆栈编写的应用程序要大。这是因为您的MonoTouch应用程序依赖于Mono/.Net框架的一个子集。不过,在这方面,一旦你了解了它的功能,MonoTouch应用程序就没有什么特别的不同了。我曾在一家公司工作,在那里我们根据自己的定制框架构建应用程序(用苹果的堆栈开发)。它增加了我们应用程序的大小,但也缩短了生产时间(这总是一个折衷方案,对吧?)。另外,编译后的应用程序包的大小可能具有欺骗性。由于捆绑包是为应用商店压缩的,因此大小会显著减小-您可以轻松编写一个MonoTouch应用程序,该应用程序完全符合OTA提供的应用程序的可接受大小限制(我提出这个问题是因为MT n0obs(正确地)倾向于问这个问题)。因此,苹果没有任何真正的理由拒绝基于大小

-无论是MonoTouch还是定制的内部框架,比如我曾经使用过的框架,MonoTouch的东西在你的应用程序中附带时,只是另一个可以用Objective-C编写的框架

-如果您担心将应用程序配置为使用整个MonoTouch堆栈进行分发,以及这可能会如何影响您获得批准的机会,您可以告诉MonoDevelop(或命令行中的mtouch实用程序)输出Xcode项目。您将看到您的代码已经被转换——您将看到本机程序集(而不是某种风格的IL)。您可以在Xcode中构建和运行MonoTouch制作的应用程序,此时MonoTouch基本上已经不存在了(除了作为您构建的框架(例如MapKit)之外)

出于某种原因,所有这些都困扰着一小部分iPhone开发人员,不管出于何种原因,他们无法忍受陌生人使用不同的工具构建应用程序的想法。但他们的仇恨并没有改变一个简单的事实,即苹果已经接受了MonoTouch应用程序(以及很久以前的Unity应用程序)

根据我的经验,你会发现MT应用程序被拒绝的最大原因是MT开发者(我已经和很多人谈过了——在做过一些演讲、在论坛上发帖、在邮件列表上发帖……之后),他们还没有学会如何开发iPhone应用程序。这是iPhone开发者在编写应用程序时必须做的事情。MonoTouch不是障碍——它知道,例如,苹果希望你的应用程序以某种方式运行——它应该像其他(好的)iPhone应用程序一样,在外观、感觉和行为上都一样,不应该成为为手机编写桌面应用程序的例子之一(这是一般开发人员在过渡到移动开发时犯的第一个错误)

归根结底,你选择的工具并不重要,只要它能创造出符合苹果规则(比如MonoTouch)的功能。真正的障碍是学习iPhone应用程序设计的方式

Net应用程序开发人员,无论是在Windows、Windows Mobile上,还是在运行Mono(而非MonoTouch)的任何地方,都习惯于根据自己的喜好开发应用程序。这在iPhone世界是行不通的

你可以放心地使用MonoTouch。如图所示,苹果将批准MT应用程序

你真正需要做的事情(再次强调,无论你选择哪个开发堆栈)是阅读苹果关于iPhone应用程序设计的文档和他们的指导方针。有一大群开发人员将他们的应用程序被拒绝归咎于苹果是邪恶的(或者其他什么——基本上是不知情的借口),而事实是他们的应用程序都是垃圾,开发人员显然没有遵守规则(甚至懒得阅读规则)

最终,在许多情况下,当使用MonoTouch时,您编写的代码要少得多,而这样做的成本是一个更大的应用程序包(正如我所说的,在压缩分发后,它的大小会非常合理)

这不是什么大问题。使用3g,用户不必担心下载2-3MB大小的应用程序。如果它足够小,可以发送OTA,一切都很好。如果你的应用程序超出了限制,很可能是嵌入式资源(媒体-图像、视频等-这就是捆绑包通常扩展到仅wifi大小的原因)这也是Objective-C开发人员必须解决的问题,所以这不是一个一键式的问题

所以,不要理会那些讨厌你的人(他们甚至没有尝试过MonoTouch,也没有费心去了解它的工作原理),只要你的应用程序符合苹果的指导原则,你就可以放心了