最近我看到了很多这样的问题(或类似的问题)。让我惊讶的是,人们经常回应,但真正提供答案的人却很少。
我有我的偏好(我喜欢两种技术栈),但这就是大多数“答案”开始出错的地方。它不应该是关于我想要什么(或任何其他人想要什么)。
以下是我确定使用MonoTouch价值的方法 - 显然,我不能客观地进行评估,但我认为这是相当客观的:
这是为了娱乐还是商业用途? 如果您想进入此领域的咨询业务中,那么您可以非常快速地赚回399美元。
您想要彻底了解平台,还是“只是”想为其编写应用程序?
您是否喜欢 .Net ,以至于使用不同的开发技术栈会让您失去其中的乐趣?再次强调,我喜欢这两种技术栈(苹果和Mono),但对我来说,MonoTouch使体验更加有趣。 我没有停止使用苹果的工具,但主要是因为我“真的很喜欢这两种技术栈”。我喜欢iPhone,我喜欢 .Net。 在这种情况下,对我来说,使用MonoTouch是一个毫无疑问的选择。
你是否擅长使用 C 语言?我指的不是 Objective-C,而是 C。这很重要,因为 Objective-C 就是 C。它是一个漂亮、时髦、友好的面向对象版本,但如果指针让你感到不适,那么 MonoTouch 就是你的朋友。不要听信那些认为如果你不喜欢指针(或者 C 等等)就是软弱开发者的人的话。我曾经带着 IBM ROM BIOS Pocket Reference 的一份副本四处走动,当我编写汇编语言并将计算机强制进入有趣的视频模式以及为它们编写自己的字体呈现部分和(虽然有点糟糕的)窗口系统时,我并不认为 QuickBasic 开发者是软弱的。我曾经是 QuickBasic 开发者(还有其他的开发)。永远不要屈服于书呆子男子主义。如果你不喜欢 C,如果你不喜欢指针,并且如果你想尽可能地远离手动内存管理(公平地说,在 ObjC 中实际上并不糟糕),那么...... MonoTouch。不要为此受到任何压力。
你想要面向用户或企业吗?对我来说没什么区别,但是Edge上仍然有人在使用,事实是:如果使用苹果的技术栈,您可以创建一个远比较小的下载包。我一直在尝试使用MonoTouch,并且已经创建了一个很不错的小应用程序,一旦压缩后,大小只有约2.7 MB(提交应用程序进行分发时,需要压缩它-当从商店下载应用程序时,它们会被压缩-因此,在计算您的应用程序是否将在10MB的OTA限制以下时,请先压缩它-使用MonoTouch,您将感到非常满意)。但是,除了MT开心以外,如果您的目标是最终用户,则半兆与近三兆(例如)之间的差距可能对您很重要。如果您考虑的是企业工作,则几兆根本无所谓。并且,要明确一点-我将很快将基于MT的应用程序提交到商店中,并且我对其大小没有任何问题。这完全不影响我。但是,如果这是您关注的问题,那么苹果的技术栈在这方面胜出。
进行XML工作吗?MonoTouch。没有其他选择。
字符串操作?日期操作?其他数百万个.NET功能?MonoTouch。
Web服务?MonoTouch。
从语法上讲,它们都有各自的优点。Objective-C倾向于在您必须编写代码时更冗长。您会发现自己使用C#编写代码,而在Objective-C中则不需要编写,但两者都一样。这个特定的主题可以填满一本书。我更喜欢C#的语法,但是在克服了我对Objective-C一开始的反应后,我已经非常享受它了。在演讲中,我会拿它开玩笑(对于那些习惯于C#/Java /等的开发人员来说,它确实很奇怪),但事实是我内心有一个Objective-C形状的地方让我感到快乐。
你打算使用Interface Builder吗?因为即使在这个早期版本中,我发现使用IB构建UI并在代码中使用它们需要的工作量明显减少。感觉就像从Objective-C/IB方式中漏掉了整个步骤,我非常确定这是因为从Objective-C/IB方式中漏掉了整个步骤。到目前为止,虽然我认为还没有进行充分的测试,但MonoTouch是做的最少的工作量的胜者。
你认为学习新语言和平台有趣吗?如果是这样,iPhone会提供很多机会,而且Apple的技术栈可能会让你走出舒适区——对于一些开发者来说,这很有趣味(嗨——我就是其中之一——我开玩笑并抱怨过,但通过Apple的工具学习iPhone开发给我带来了很多乐趣)。
有很多事情要考虑,价值是如此抽象。如果我们谈论成本和是否值得,答案归结为我的第一个要点:如果这是为了商业目的,如果你能得到工作,你将很快收回成本。
那么......这大概是我能做到的最客观的。这是你可能会问自己的问题的一个简短列表,但这是一个起点。
个人而言(暂时放下客观性),我喜欢并使用两者。我很高兴我先学习了Apple的技术栈。当我已经熟悉苹果的世界时,使用MonoTouch更容易上手。就像其他人说的那样,你仍然会使用CocoaTouch——只不过是在一个.Net环境中。
但不仅如此。那些没有使用过MonoTouch的人就会停留在那里——"它只是一个包装器啦啦啦"——那不是MonoTouch。
MonoTouch提供了访问CocoaTouch所提供的功能以及访问.Net(子集)所提供的功能,使用一些人感觉更加舒适的IDE(我就是其中之一),与Interface Builder更好的集成,虽然你不能完全忘记内存管理,但你会得到一个很好的缓冲区。
如果你不确定,可以获取Apple的堆栈(免费),并获取MonoTouch评估堆栈(免费)。在加入苹果开发计划之前,两者都只能在模拟器上运行,但这足以帮助你找出你是否远远喜欢其中一个,以及MonoTouch是否对你而言值得399美元。
不要听信狂热者的话——他们往往是那些没有使用他们反对的技术的人 :)