就像任何工具或平台或语言或框架或任何问题一样,它应该归结为你想要的。
忘记所有如果你想为这个平台开发然后你必须支付你的会费的建议。如果你有兴趣学习 Objective-C、Xcode 和相关的 Apple 位,那么 goferit。我做到了。这很有趣,但我的兴趣是开发 iPhone 应用程序。学习一门新的语言、框架和 IDE 只是一种奖励(我喜欢这些东西)。我开始的时候也是必要的。
自 MonoTouch 发布以来,我一直在使用它,我喜欢它。我更喜欢 C# 而不是 Objective-C,而且我喜欢访问 MonoTouch 提供的 .Net (Mono) 框架的子集。有些事情用 .Net 比 Cocoa 更容易做(字符串操作、日期操作、任何XML 等)。
我也喜欢不再需要处理引用计数。我被多年来不必跟踪该级别的资源所宠坏。我不介意必须自己清理,但我不想手动执行我使用过的所有其他现代开发平台自动为我执行的操作。另外,即使对于经验丰富的 Objective-C 开发人员来说,引用计数也不是一件容易的事。有时滚动浏览 OS X 的控制台输出,以查看有多少应用程序由于内存管理问题而崩溃(我知道 - 基本上任何应用程序都可能发生这种情况,但是当你让开发人员过度劳累时,更容易犯下导致这种情况的错误他们的注意力已经被 12 小时的 if this and if that and else this and else that and blah blah blah) 摧毁了。
我仍然使用 Objective-C/Xcode——我真的学会了喜欢 Apple 的工具。老实说,我觉得他们很尴尬,有点神秘,但仍然很有趣。
但是……那我也喜欢这样:
public string SomeString { get; set; }
用 Objective-C 做同样的事情(无论如何在 iPhone 上)需要你声明一个局部变量来支持属性,编写属性声明,然后使用“synthesize”指令为你生成属性(取决于关于您指定的属性属性,您可能有一个包装了 getter 和 setter 的属性,它们为您处理引用计数 - 总体而言,这是一个节省时间的方法,但 C# 方式显然是这里的赢家)。
这只是 MonoTouch 如何让您的生活更轻松的一个示例,特别是如果您习惯于 .Net/Java/Python/其他不需要您弄脏内存管理的语言(除非您愿意) .
就 iPhone 而言,除了将 .Net 的一部分引入 iPhone 世界之外,MonoTouch 命名空间映射到 CocoaTouch,所以如果你对 MonoTouch UIViewController 感到困惑,你可以直接跳到 Apple 的文档在 UIViewController 上。MonoTouch .Net-izes CocoaTouch,但它足够接近,您不太可能撞到墙(如果您使用 Xcode/Objective-C,也不会撞到墙)。它很光滑。
钛不一样。由于他们正在尝试(尝试)创建一个抽象层,让您可以为多个平台编写相同的应用程序,因此您将处理通常的缺点:完全不同的 API,失去灵活性(MonoTouch 也可以这样说) ,但程度不同),并且基本上必须学习一个全新的平台(这是你试图通过绕过 Xcode/Objective-C/CocoaTouch 来避免的,对吧?)。
我也讨厌 JavaScript,所以我会偏向于 Titanium。但即使不是这样——即使我可以使用我喜欢的语言——API 也不会满足我的想象。或者我的任何东西。
无论您选择哪种开发工具,您最终都必须学习一些有关 CocoaTouch 的知识。无论是 Xcode/Objective-C、MonoTouch 还是 Titanium,您都会遇到问题或完全无法解决问题,您最终将不得不参考 CocoaTouch 文档。
如果我要发表关于 iPhone 开发的演讲(我已经做过,而且我将再次做),如果我要讨论 Apple 开发工具的替代品(我会这样做),我仍然会强烈鼓励开发人员至少工作通过使用本机工具的一些基本 iPhone 应用程序。这将使您成为该平台的更好的开发人员 - 期间。您可以使用这个开始阶段来确定您是否想要使用除 Apple 提供的免费位以外的任何东西。你可能不会。我一直在使用 MonoTouch,因为它让我满意——而不是因为它是必要的。
因此,总结几个基本标准:
不要听那些反对者的话,除非他们真的使用了他们所谈论的技术。例如,我读过关于 Titanium 的文章,但我没有使用它的经验——我只知道由于我的喜好,我不想与它有任何关系。这并没有让它变得“坏”——只是我生活中不想要的东西。
Objective-C 人群的热情令人印象深刻。虽然其中有很多思想开放的开发人员,但也有很多人认为 Objective-C 和 Cocoa等等是 devkind 将永远需要的最后的开发工具。
别理他们。
如果您担心支持,请考虑以下几点:
苹果很可能会保持最新状态,因为他们是制造这种垃圾的人。
MonoTouch 很可能会保持最新状态——Mono 窥视者在跟上 Microsoft 方面做得非常出色,我认为他们没有理由不与 Apple 做同样的事情。我对他们的所作所为感到震惊。尽管 MonoTouch 已经发布,就像五分钟前一样,他们已经为 iPhone 3.1 发布了更新。他们对此很认真,我认为他们很神奇。他们是开发世界的基布勒精灵。他们坐在他们的秘密层中,制作每个人(好吧 - 不是每个人)都喜欢的东西,但其他人甚至都不会尝试这样做。
Titanium 要么会成为一个尴尬的统一 API,用于为多个平台编写应用程序,这完全是它自己的事情,要么会随着不同平台的功能分化而变得越来越分裂。是的,那是一群典型的扶手椅书呆子式的未来凝视……我应该在这个项目符号的开头加上“我认为……”如果有办法回去改变它。
我现在就闭嘴。
随心所欲。MonoTouch 是 Apple 产品的“安全”替代品。恐怕 Titanium 会走上与许多其他技术一样的老路——这个超高级平台——抽象层——东西并不真正可行。但是,如果您正在做一些简单的事情,那么试一试并没有什么坏处,尤其是考虑到它在测试期间是免费的。
好的。
现在真的闭嘴了......我希望这会有所帮助。