我最近经常看到这个问题(及其变体).让我惊讶的是,人们的react 有多频繁,但却只有answer个.
我有自己的偏好(我喜欢这两个堆栈),但这是大多数"答案"开始出错的地方.它不应该是关于我想要什么(或者其他人想要什么).
以下是我如何决定MonoTouch的价值——显然,我不能客观,但我认为这是非常没有狂热的:
这是为了娱乐还是为了生意?如果你想进入这一领域的咨询业,你可以很快赚回399美元.
你是想彻底了解这个平台,还是"只是"想为它编写应用程序?
你喜欢吗?Net,使用不同的开发人员堆栈会给你带来乐趣吗?同样,我喜欢这两个堆栈(Apple和Mono),但对我来说,MonoTouch让体验更加有趣.我并没有停止使用苹果的工具,但这主要是因为我really do enjoy both stacks岁.我喜欢iPhone,我也喜欢.网在这种情况下,对我来说,单点touch 是一件不需要动脑筋的事.
你觉得和C一起工作舒服吗?我不是说Objective-C,而是C——这很重要,因为Objective-CisC.这是一个很好的、奇特的、友好的OO版本,但是如果指针给了你heebie jeebies,MonoTouch就是你的朋友.如果你碰巧喜欢指针(或C等),不要听那些认为你是开发人员的反对者的话.我过go 常常带着一份IBM ROM BIOS Pocket Reference的副本四处走动,当我编写汇编程序,强迫我的计算机进入有趣的视频模式,并为它们和(无可否认是无用的)窗口系统编写自己的字体渲染位时,我不认为QuickBasic开发人员是胆小鬼.我有一个QuickBasic开发工具(除其他外).永远不要向书呆子的男子气概屈服.如果你不喜欢C,如果你不喜欢指针,如果你想尽可能远离手动内存管理(公平地说,在ObjC中它一点也不坏),那么...单触.别再胡说八道了.
你想针对用户还是企业?这对我来说没什么大不了的,但仍然有人在紧张不安,事实是:如果你使用Apple的stack,你可以创建一个小得多的下载包.我一直在玩MonoTouch,我有一个不错的小应用程序,一旦压缩,降低到大约2.7 MB(当提交应用程序进行分发时,你会将其压缩——当应用程序从应用store 下载时,它们会压缩——因此,当确定你的应用程序是否会低于10MB OTA限制时,首先压缩吸盘——你会对MonoTouch感到惊喜).但是,撇开幸福不谈,如果你瞄准的是终端用户,那么半个梅格和近三个梅格(例如)对你来说可能很重要.如果你考虑的是企业工作,几MB根本不重要.而且,需要明确的是,我将很快向store 提交一个基于机器翻译的应用程序,我对它的大小没有任何问题.一点也不困扰我.但如果这是一个与you有关的问题,那么苹果的堆栈将赢得这一次.
做XML工作吗?单触.时期
字符串操作?约会操纵?还有无数我们已经习惯的小事情.Net的一切和厨房水槽框架?单触.
网络服务?单触.
在句法上,它们都有各自的优势.Objective-C往往更详细.你会发现自己在用C编写代码,你不必用ObjC编写代码,但它是双向的.这个特别的话题可以填满一本书.我更喜欢C#语法,但在克服了我最初对Objective-C的react 后,我学会了享受它.我在谈话中对此开了一点jest(对于习惯C#/Java/等的开发者来说,这很奇怪),但事实是,我心中有一个客观的C形点,这让我很高兴.
你打算使用界面生成器吗?因为,即使在这个早期版本中,我发现自己用IB构建UI并在代码中使用它们的工作也少得多.感觉像是Objective-C/IB做事方式缺少了整个步骤,我很确定这是因为Objective-C/IB做事方式缺少了整个步骤.到目前为止,我认为我还没有足够的测试,但是so far,MonoTouch是赢家,因为你需要做的工作要少得多.
你觉得学习新的语言和平台有趣吗?如果是这样的话,iPhone有很多东西可以提供,而苹果的堆栈可能会让你走出舒适区——对于一些开发者来说,这是fun(嗨,我是那些开发者中的一员——我Jest 说这件事,给苹果公司带来了困难,但通过苹果的工具,我在学习iPhone开发方面获得了很多乐趣).
有太多的事情要考虑.价值是如此抽象.如果我们讨论的是成本以及它是否值得,答案可以归结为我的第一个要点:如果这是为了生意,如果你能得到工作,你马上就能赚回你的钱.
所以这是我所能做到的最客观的.这是一个简短的 list ,列出了你可能会问自己的问题,但这是一个起点.
就我个人而言(让我们暂时放弃客观性),我喜欢并使用这两种方法.我很高兴我先学会了苹果的堆叠.当我已经知道自己在苹果世界的道路时,我更容易用MonoTouch启动和运行.正如其他人所说,你仍将与CocoaTouch合作——它只是在一个新的阶段.网络化环境.
但不止这些.没有使用MonoTouch的人倾向于到此为止——"这是包装纸之类的废话"——这不是MonoTouch.
MonoTouch让您可以访问CoCoatTouch提供的内容,同时也让您可以访问CoCoatTouch的一个子集.Net必须提供一个IDE,一个一些人觉得更舒服的IDE(我就是其中之一),更好地与Interface Builder集成,尽管你不能完全忘记内存管理,但你有很好的回旋余地.
如果你不确定,可以抓取苹果的堆栈(它是免费的),然后抓取MonoTouch eval堆栈(它是免费的).在你加入苹果的开发计划之前,这两款产品都只能在模拟器上运行,但这足以帮助你弄清楚你是否非常喜欢其中一款,以及MonoTouch对你来说是否值得399美元.
不要听狂热者的话——他们往往是那些没有使用他们所指责的技术的人:)