作为.NET开发人员,我一直梦想的可能性与我现有的技能(C#)的iPhone应用程序开发。
这两个方案都需要安装在Mac和iPhone的SDK。
Appcelerator的钛是第一个应用程序,我试过,它是基于暴露出一些iPhone原生API的JavaScript,使他们能够使用语言调用。
MonoTouch的起价为$ 399 beeing能够部署在iPhone上,而不是在iPhone模拟器,而钛是免费的。
MonoTouch的(MonoDevelop中)具有当前缺少钛一个IDE(但你可以使用像TextMate的任何编辑器,集锦...)
我认为这两个程序产生在最后一个原生应用程序预编译(也如果我不知道iPhone上的应用最终的大小,因为我认为.net框架调用在MonoTouch的编译时间prelilnked)。
我也不能肯定所有的iPhone API和功能的全覆盖。
钛还具有优势,使Android应用程序的开发,但作为一个C#开发人员,我仍然觉得MonoTouch的经历更像是在Visual Studio之一。
你会选择哪一个?你们对MonoTouch的钛经验?
像任何其刀具或平台-或-语言或框架或-任何问题,它应该回落到你想要的东西。
忘记所有的如果,你想学对发展换这个平台,然后任您有到付的会费的建议。 如果您有兴趣学习的Objective-C,Xcode的,以及相关的苹果位,然后goferit。 我做到了。 它很有趣,但我关心的是在开发iPhone应用程序。 学习一门新的语言,框架和IDE只是一个奖励(我喜欢这个东西)。 此外,有必要的时候,我开始。
我一直在MonoTouch的工作,因为它被释放,我喜欢它。 我更喜欢C#到目标C,我喜欢具有访问.NET(单声道)框架,该框架的MonoTouch提供的子集。 有一些事情,只是更容易与.net比可可(字符串操作,日期操作, 任何 XML等)做。
我也很喜欢不必再处理引用计数。 我是多年没有跟踪资源的该级别的破坏。 我不介意照顾自己清理,但我不希望有手工做的东西,我用所有其他现代开发平台自动完成对我来说。 另外,即使是经验丰富的Objective-C开发者,引用计数是不是一个没有脑子。 翻阅OS X的控制台输出的某个时候,看看有多少应用程序崩溃是由于内存管理问题(我知道 - 这可以用基本上任何应用程序发生,但它更容易做出导致这种情况,当你参与劳累过度开发者的失误他们的注意力都被摧毁由十二个小时,如果这一点,如果是和else这和其他事物等等等等)。
我仍然使用的Objective-C / Xcode的 - 我真的学会了像苹果的工具。 老实说,我觉得他们是尴尬的,有点神秘,但仍然乐趣。
但是......然后我也很喜欢这一点:
public string SomeString { get; set; }
做的Objective-C同样的事情(在iPhone上,反正),您需要声明一个局部变量来支持物业,写的财产申报,然后使用“合成”指令来对你产生的财产(视什么属性的属性指定,你可能有一个包装了照顾引用计数为你的getter和setter属性-总体而言,这是一个节省时间,但C#的方式是明显的赢家这里)。
这就是MonoTouch中如何使您的生活更轻松只是一个例子,特别是如果你使用的.Net / Java的/ Python的/其他语言不要求你让你的手指脏内存管理制(除非你想) 。
至于iPhone的烦躁而言,除了盐渍.NET的一部分对iPhone世界,MonoTouch的命名空间映射到CocoaTouch,所以如果你感到困惑,比如说,MonoTouch的UIViewController中,就可以搭上了苹果的文档在UIViewController中。 MonoTouch的.Net的izes CocoaTouch,但它是足够接近,你就不可能碰了壁(即不会也被击中,如果你使用的Xcode /的Objective-C)。 这是光滑。
钛是不同的。 因为他们试图( 尝试 )创建一个抽象层,让你写多平台相同的应用程序,你要处理与通常的缺点:完全不同的API,失去弹性(同样可以说的MonoTouch的,但不能远程同等程度),基本上不必学习一个全新的平台(这是你试图避免让周围的Xcode /的Objective-C / CocoaTouch,右是什么?)。
我也很讨厌的JavaScript,所以我要对钛有偏差。 但是,即使是情况并非如此 - 即使我可以用一种语言我不喜欢 - 的API不胳肢我的幻想。 还是我的东西。
无论您选择的开发工具,你最终将不得不学习一些关于CocoaTouch。 无论是Xcode中/ Objective-C中,MonoTouch的,或钛, 东西是要摆脱或全力以赴靠不住的你,而你最终将不得不提及CocoaTouch文档。
如果我给iPhone开发的谈话(我有,并且我会再次这样做),如果我是来讨论替代苹果的开发工具(我会),我仍然会大力鼓励开发者至少工作通过使用本地工具的几个基本的iPhone应用程序。 这将让你的平台更好的开发者 - 时期。 你可以使用这个起步阶段,以确定如果你连想使用免费的Apple提供的位之外的任何东西。 你可能不会。 我一直在使用MonoTouch的过,因为它让我高兴 - 不是因为它是必要的。
因此,要总结几个基本条件:
除非他们已经实际使用他们谈论的高科技不听反对者。 例如,我读过有关钛,但我不会用它经历 - 我只知道,我什么都不想用它做是考虑我的喜好的。 这并不使“坏” - 只是我不想在我的生活。
Objective-C的人群可以赫然热心。 虽然有很多在它豁达开发者的,有这么,这么, 这么多谁想到的Objective-C和Cocoa等等等等都devkind永远都需要的最后一个开发工具。
别理他们。
如果你担心的支持,这里有一些东西需要考虑:
苹果很可能将保持当前,他们正在做这垃圾的人。
MonoTouch的可能仍是当前 - 单声道一瞥已经做了了不起的工作跟上微软,我不明白为什么他们不会做同样的苹果。 我被他们做什么吹走。 尽管已公布的MonoTouch一样,五分钟前,他们已经有一个更新了的iPhone 3.1的东西。 他们是认真的,我认为他们是魔法。 他们是世界上开发的奇宝精灵。 他们坐在他们的秘密层和炮制出的东西大家(OK - 不是人人都)喜欢,但没有其他人甚至会尝试这样做。
钛要么会成为写程序,多平台的尴尬统一的API,完全是自己的事,或者它会变得越来越分裂为不同平台的功能分开。 是啊,这是一个典型的一堆扶手椅nerdly未来的凝视......我应该作序该项目符号项与“这是我的看法是......”要是有办法回去,并改变它。
现在我会闭嘴。
去你喜欢什么。 MonoTouch的是“安全”的替代苹果的东西。 恐怕钛是要下去的老哎呀,这个超高层平台抽象层,东西-doesn't,真正工作的道路,许多其他的技术有。 但是,如果你正在做一些简单的,有一个在赌它一把,尤其是考虑到这是在测试期间免费无伤害。
毒蛇。
现在真的关闭了......我希望这有助于。
这些都是好玩和有趣的方式,你可以建立iPhone应用程序。 但是,对于真正的快速本地iPhone开发,你最好的选择是免费的iPhone SDK和Xcode的。
说实话,最难学的东西都是框架本身的能力,而不是语言的语法。 但是,这是你必须解决任何一种方式为这些IDE /语言仍然需要你掌握一些可可(和可可触摸)的公约的问题。
我不说这是一个可可/ Objective-C的势利,但如果你知道C(其作为一个C#开发你做的)实在是没有任何门槛。
此外,您将有机会获得万吨教程和示例代码,只是将无法使用这些羽翼未丰的译者/的IDE /语言。
学习另一种编程语言很少是一件坏事,并作为一个有经验的程序员,你投入的时间将不会像你想象的那么大。
我创建了一个开源项目http://propertycross.com ,帮助开发者通过展示与煎茶,钛,Xamarin和更实现了相同的应用程序中选择一个跨平台的移动框架。 这个项目可以让你轻松的最终用户体验,代码,IDE,开发经验等方面比较广泛的框架...
我还挺喜欢提供手段来迅速获得iPhone开发与TECHNO人一握的想法已经知道了。 我personnaly,作为一个Java开发人员,使用iSPectrum( http://www.flexycore.com )。 它还配备了一个IDE,调试器之类的东西,这使得它真的很方便用,因为它有利于Eclipse的Java插件的所有电源的发展。 基于Java是,这也可以轻松地从其他Java应用程序,它可以非常方便的提供Java是目前在几乎所有平台(桌面和移动一样),除了iPhone重用已有的代码。 加上它是免费的开源项目。
我宁愿认为这些类型的解决方案,因为我不喜欢回来在Emacs开发:)的想法。
我知道这是一个老话题,但在目前停留的利益,它看起来像MonoTouch的和其他跨平台的框架都将在SDK 4.0被禁止 。 你唯一的“安全”的赌注编写iPhone应用程序是使用Xcode和Objective-C的,至少暂时。
如果你是C#程序员,为什么你不应该投资一些时间来学习目标C.坦白说,它不会花费太多的时间,从你的。 但你感觉很好用新的语言的新平台工作。 学习新的东西所有的时间让我着迷。
有许多方法来获得设备上。 苹果公司在SDK许可证的唯一认可的方式来获得设备上是通过C,C ++,的ObjectiveC和Javascript曾表示。
看来在这个时间点的应用程序建立在MonoTouch的和Appcelerator的钛被接受进入App Store。 由于牌照的变化,有很多恐惧,不确定,怀疑在这个问题上。 苹果已经吓得大家都没有做的ObjectiveC。
我建议你做什么最有意义的,你作为一个开发人员。 如果你知道C#和.NET,你应该去MonoTouch的。 如果你知道的ObjectiveC或Mac平台的ObjectiveC可能是要走的路。 如果你知道X,它是在iPhone上,那么,X是在那里我会建议找第一。