我最近经常看到这个问题(及其变体)。令我惊讶的是,人们回复的频率很高,但回复的次数却很少。
我有我的偏好(我喜欢这两种堆栈),但这是大多数“答案”开始出错的地方。它不应该是关于我想要什么(或其他人想要什么)。
下面是我如何确定 MonoTouch 的价值 - 显然,我不能客观,但我认为这是非常狂热的:
这是娱乐还是商务?如果你想进入这个领域的咨询,你可以很快赚回 399 美元。
你想从内到外学习这个平台,还是“只是”想为它编写应用程序?
您是否足够喜欢 .Net,以至于使用不同的开发堆栈会为您带来乐趣?同样,我喜欢这两种堆栈(Apple 和 Mono),但对我来说,MonoTouch 让体验变得更加有趣。我并没有停止使用 Apple 的工具,但这主要是因为我真的很喜欢这两种堆栈。我喜欢 iPhone,也喜欢 .Net。在那种情况下,对我来说,MonoTouch 是轻而易举的事。
你觉得和 C 一起工作很舒服吗?我指的不是 Objective-C,而是 C——这很重要,因为 Objective-C是C。它是一个不错的、花哨的、友好的 OO 版本,但是如果指针给你带来了 heebie-jeebies,那么 MonoTouch 就是你的朋友。如果碰巧您不喜欢指针(或 C 等),请不要听那些认为您是开发者的反对者。我过去常常带着一份 IBM ROM BIOS Pocket Reference 的副本四处走动,当我编写程序集并迫使我的计算机进入有趣的视频模式并为它们和(诚然垃圾)窗口系统编写我自己的字体渲染位时,我没有不要认为 QuickBasic 的开发者是坏蛋。我是一个 QuickBasic 开发人员(除了其余的)。永远不要屈服于书呆子的男子气概。如果你不喜欢 C,如果你不喜欢指针,如果你想尽可能远离手动内存管理(而且,公平地说,在 ObjC 中一点也不差),那么。 .. 单触。并且不要为此胡说八道。
您想定位用户或企业吗?这对我来说无关紧要,但仍然有人使用 Edge,而事实是:如果您使用 Apple 的堆栈,您可以创建一个更小的下载包。我一直在玩 MonoTouch,我有一个不错的小应用程序,一旦压缩,它会降到大约 2.7 MB(提交你的应用程序进行分发时,你压缩它 - 当应用程序从商店下载时,他们'重新压缩 - 因此,当确定您的应用程序是否会低于 10MB OTA 限制时,请先压缩傻瓜 - MonoTouch 会让您感到惊喜)。但是,除了 MT 快乐之外,如果您的目标是最终用户,那么半兆与近 3(例如)对您来说可能很重要。如果您正在考虑企业工作,那么几 MB 根本无关紧要。和,需要明确的是——我很快就会向商店提交一个基于 MT 的应用程序,而且我对大小没有任何问题。根本不打扰我。但如果这是值得关注的事情你,那么 Apple 的堆栈赢了这个。
做任何 XML 工作?单触。时期。
字符串操作?日期操纵?我们已经习惯使用 .Net 的一切和厨房水槽框架的其他一百万个小东西?单触。
网页服务?单触。
从语法上讲,它们都有各自的优势。Objective-C在你必须写它的地方往往更冗长。您会发现自己使用 C# 编写代码,而不必使用 ObjC 编写,但它是双向的。这个特定的主题可以写满一本书。我更喜欢 C# 语法,但在克服了我最初对 Objective-C 的“这是超凡脱俗”的反应之后,我学会了享受它。我在谈话中取笑它(这对于习惯于 C#/Java/等的开发人员来说很奇怪),但事实是我心里有一个 Objective-C 形状的点让我很开心。
你打算使用界面生成器吗?因为,即使在这个早期版本中,我发现自己用 IB 构建 UI 并在代码中使用它们的工作要少得多。感觉就像 Objective-C/IB 的做事方式缺少整个步骤,我很确定这是因为 Objective-C/IB 的做事方式缺少整个步骤。到目前为止,我认为我还没有进行充分的测试,但是到目前为止,MonoTouch 是赢家,因为您需要做的工作少得多。
你认为学习新的语言和平台很有趣吗?如果是这样,iPhone 有很多东西可以提供,Apple 的堆栈可能会让你走出舒适区——这对一些开发者来说很有趣(嗨——我是其中的开发者之一——我开玩笑说Apple 经历了一段艰难时期,但我通过 Apple 的工具学习 iPhone 开发获得了很多乐趣)。
有很多事情要考虑。价值是如此抽象。如果我们谈论成本以及它是否值得,答案归结为我的第一个项目符号:如果这是为了商业,并且如果你能得到工作,你会马上赚回你的钱。
所以……这就是我所能做到的客观。这是您可能会问自己的简短列表,但这是一个起点。
就个人而言(让我们暂时放弃客观性),我喜欢并使用两者。我很高兴我首先了解了 Apple 堆栈。当我已经熟悉 Apple 的世界时,我更容易开始使用 MonoTouch。正如其他人所说,您仍将使用 CocoaTouch——它只是在一个 .Net 化的环境中。
但不止于此。没有使用过 MonoTouch 的人往往会停在那里——“这是一个包装器等等等等”——那不是 MonoTouch。
MonoTouch 让您可以访问 CocoaTouch 必须提供的功能,同时还可以让您访问 .Net 必须提供的(一个子集),一些人觉得更舒服的 IDE(我是其中之一),与 Interface Builder 更好的集成,虽然你不会完全忘记内存管理,但你有很大的余地。
如果您不确定,请获取 Apple 的堆栈(它是免费的),并获取 MonoTouch 评估堆栈(它是免费的)。在您加入 Apple 的开发计划之前,两者都只能在模拟器上运行,但这足以帮助您确定您是否更喜欢其中一个,以及 MonoTouch 对您而言是否值 399 美元。
不要听那些狂热者的话——他们往往是那些没有使用他们所反对的技术的人:)