如何决定MonoTouch和Objective
在Mono举行的本地.Net活动中,MonoTouch的使用被作为iPhone开发的替代品。 在C#和.Net中使用起来非常舒服,尽管Mono堆栈有些诡异,但它似乎是一个吸引人的选择。 但是,由于MonoTouch的售价为400美元,因此如果这是iPhone开发的方式,我会受到一些限制。
任何人都有使用MonoTouch和Objective-C进行开发的经验,如果是的话,使用MonoTouch进行开发比学习Objective-C更简单,更快速,而且价值400美元?
最近我已经看到了这个问题(以及它的变体)。 令我感到惊讶的是人们经常回应,但几乎没有人回答。
我有我的偏好(我喜欢这两个堆栈),但这是大多数“答案”开始出错的地方。 它不应该是关于我想要的(或其他任何人想要的)。
以下是我如何确定MonoTouch的价值 - 显然,我不能客观,但我认为这是非常热心的:
这是为了娱乐还是业务? 如果你想在这方面进行咨询,你可以很快就让你回到399美元。
你是否想从内到外学习平台,或者你“想”为它编写应用程序?
你是否喜欢.Net足够使用不同的开发堆栈会为你带来乐趣? 再次,我喜欢这两个堆栈(Apple和Mono),但对我来说,MonoTouch让体验变得更有趣。 我还没有停止使用苹果的工具,但主要是因为我真的喜欢这两个堆栈。 我喜欢iPhone,我喜欢.Net。 在那种情况下,对我而言,MonoTouch毫不费力。
与C合作感觉舒适吗? 我不是指Objective-C,而是C - 它很重要,因为Objective-C是C.这是一个很好的,很花哨的友好的OO版本,但如果指针给你heebie-jeebies,那么MonoTouch就是你的朋友。 如果偶然发现你不喜欢指针(或C等),不要听那些认为你是开发者的反对者。 我曾经随身携带IBM ROM BIOS Pocket Reference的副本,当我编写程序集并强制我的计算机进入有趣的视频模式并为他们编写我自己的字体渲染位(并且确实是垃圾)窗口系统时,不要以为QuickBasic的开发者是wusses。 我是QuickBasic开发人员(除了其他人)。 永远不要屈服于书呆子大男子主义。 如果你不喜欢C,并且如果你不喜欢指针,并且希望尽可能远离手动内存管理(并且公平地说,它在ObjC中并不差),那么。 MonoTouch。 不要为此付出任何代价。
您想要定位用户还是企业? 这对我来说并不重要,但Edge上仍然有人,事实是:如果您使用Apple的堆栈,您可以创建更小的下载包。 我一直在玩MonoTouch,而且我有一个体面的小应用程序,一旦压缩,就会下降到大约2.7 MB(当提交您的应用程序进行分发时,您将其压缩 - 当应用程序从商店下载时,重新压缩 - 因此,当确定您的应用程序将在10MB OTA限制下进入时,首先将压缩文件压缩 - 您将对MonoTouch感到惊喜)。 但是,除了MT幸福之外,如果您的目标客户是最终用户,那么对于将近三个(例如)半米就可能对您很重要。 如果你在考虑企业工作,几MB根本就不重要。 而且,要明确 - 我将很快向商店提交一个基于MT的应用程序,而且我对尺寸没有任何问题。 根本不打扰我。 但是如果这会让你感到担忧,那么苹果的筹码就会赢得这个奖项。
做任何XML工作? MonoTouch的。 期。
字符串操作? 日期操作? 我们已经习惯了.Net的所有东西和厨房水槽框架,还有一百万个其他小东西? MonoTouch的。
网页服务? MonoTouch的。
在句法上,它们都有其优点。 Objective-C往往更加冗长,你必须编写它。 你会发现你自己用C#编写代码,你不需要用ObjC编写代码,但是它有两种方式。 这个特定的主题可以填写一本书。 我更喜欢C#语法,但是在完成对Objective-C的最初这种非凡的反应之后,我学会了很多乐趣。 我在谈话中取笑了一下(这对于习惯于C#/ Java /等的开发者来说很奇怪),但事实是,我的心中有一个Objective-C形状的位置,这让我很开心。
你打算使用Interface Builder吗? 因为,即使在这个早期的版本中,我发现自己做的工作远没有用IB来构建UI,然后在代码中使用它们。 感觉Objective-C / IB的做事方式中没有完整的步骤,我敢肯定这是因为Objective-C / IB的做事方式中没有完整的步骤。 到目前为止,我认为我没有经过足够的测试,但到目前为止,MonoTouch在这方面是胜利者,因为您需要做的工作少得多。
你认为学习新的语言和平台很有趣吗? 如果是这样,iPhone有很多东西可以提供,而苹果的堆栈可能会让你走出你的舒适区 - 对于某些开发者来说,这很有趣(嗨,我是其中一位开发者 - 我开玩笑说,苹果公司很艰难,但我通过苹果的工具学习iPhone开发很有趣)。
有很多事情要考虑。 价值是如此抽象。 如果我们谈论成本和价值是否值得,那么答案可以归结为我的第一个项目:如果这是为了生意,并且如果你能得到这份工作,那么你就可以赚回你的钱。
所以......这跟我的目标一样客观。 这是您可能会问自己的简短清单,但这是一个起点。
就个人而言(让我们暂时放弃客观性),我喜欢和使用两者。 我很高兴我首先学会了苹果堆栈。 当我已经知道我在苹果世界的方式时,用MonoTouch来启动和运行它更容易。 正如其他人所说,你仍然将与CocoaTouch合作 - 它只是在一个.Net化的环境中。
但还有更多。 没有使用MonoTouch的人往往会停在那里 - “这是一个包装等等等等 - ”这不是MonoTouch。
MonoTouch让您可以访问CocoaTouch提供的内容,同时还可以访问.Net所提供的内容(一个子集),一些人可以更加熟悉IDE(我是其中之一),与Interface Builder更好地集成,尽管你不能完全忘记内存管理,但你会获得很好的回旋余地。
如果您不确定,请抓住Apple的堆栈(它是免费的),然后抓住MonoTouch eval堆栈(它是免费的)。 在你加入苹果的开发计划之前,两者都只能在模拟器上运行,但这足以帮助你弄清楚你是否更喜欢另一种模式,而且对于你来说,MonoTouch是否值得399美元。
不要听热心者 - 他们往往是那些没有使用他们所反对的技术的人:)
这篇文章中有很多传闻,还没有尝试过MonoTouch和Objective-C。 它似乎主要是从未尝试过MonoTouch的Objective-C开发人员。
我显然有偏见,但是你可以看看MonoTouch社区做了什么:
http://xamarin.com
在那里你可以找到几篇在Objective-C和C#中开发的文章。
所以,我对以前类似问题的回答是学习Objective-C。 (另外,不要忘记调试支持)
这可能会冒犯一些,但说实话,如果你要做任何认真的发展,你应该学习Objective-C。 在iPhone开发中不知道Objective-C只是一个障碍。 你将无法理解许多例子; 你必须处理Mono的怪癖,而如果你有Objective-C的工作知识,你可以从平台文档中获得更多。
就我个人而言,我不理解这样一种观点,即增加您需要的信息量,以支持在平台本地语言中使用Mono。 这对我来说似乎有些反作用。 我认为如果这是一个非常昂贵的命题(学习一种新语言),那么花一些时间在基本编程概念上是值得的,这样学习新语言是一个相当便宜的命题。
另一位用户也写道:
Monotouch现在对您来说更容易。 但以后更难。
例如,当新种子出来时需要测试,但出于某种原因打破了MonoTouch,会发生什么?
通过坚持单声道,任何时候你正在寻找框架的资源,你必须精神转变成你将如何与Mono一起使用它们。 您的应用程序二进制文件将会更大,开发时间在Objective-C的几个月后速度不会那么快,而且其他应用程序开发人员将拥有比您更多的优势,因为他们正在使用本机平台。
另一个考虑因素是您正在使用C#,因为您比Objective-C更熟悉该语言。 但是,绝大多数iPhone的学习曲线不是Objective-C,它是框架 - 您必须使用C#调用这些框架。
对于任何平台,您应该使用直接表达该平台设计理念的平台 - 在iPhone上,即Objective-C。 从相反的角度思考一下,如果一个习惯了GTK编程的Linux开发人员想要编写Windows应用程序,你会认真地建议他们不要使用C#并坚持使用GTK,因为这样做对他们来说“更容易”?
链接地址: http://www.djcxy.com/p/90063.html