在当地的.Net事件通过会议今天坐在单后,使用MonoTouch的物为iPhone开发替代“感动”后。 作为一个在C#和.NET非常舒服,这似乎是一个很有吸引力的选择,尽管一些单栈的诡诈的。 然而,由于MonoTouch的价格为$ 400,我有点撕裂的,如果这是去为iPhone开发的方式。
任何人都有一个经验,MonoTouch的和Objective-C开发,如果是用MonoTouch的开发更简单,比学习Objective-C更快,反过来值得$ 400〜
在当地的.Net事件通过会议今天坐在单后,使用MonoTouch的物为iPhone开发替代“感动”后。 作为一个在C#和.NET非常舒服,这似乎是一个很有吸引力的选择,尽管一些单栈的诡诈的。 然而,由于MonoTouch的价格为$ 400,我有点撕裂的,如果这是去为iPhone开发的方式。
任何人都有一个经验,MonoTouch的和Objective-C开发,如果是用MonoTouch的开发更简单,比学习Objective-C更快,反过来值得$ 400〜
我已经看到了这个问题(和它的变化)最近很多。 让我吃惊的是人们通常怎么回应,但怎么回答几个。
我有我的喜好(我喜欢两个堆栈),但是这是最“答案”开始出错。 这不应该是我想要什么(或者什么其他人想)。
这是我怎么会去有关确定MonoTouch的价值 - 我不能客观,很明显,但我认为这是相当狂热免费电话:
这是为了好玩或业务? 如果你想进入咨询在这方面,你可以让你的$ 399回得很快。
你想了解内而外的平台,还是你“只是”想为它编写应用程序吗?
你喜欢的.Net足够使用不同的开发组将采取乐趣的它适合你? 同样,我都喜欢栈(苹果和单声道),但对我的MonoTouch使得体验更加有趣。 我还没有使用苹果的工具停止,但是这主要是因为我真的很喜欢两个堆栈 。 我喜欢iPhone,我喜欢.NET。 在这种情况下,对我来说,MonoTouch的是一个没有脑子。
你觉得舒服C工作? 我的意思不是的Objective-C,但是C -这很重要,因为Objective-C的是 C.它是一个不错的,花哨的,友好的OO版本,但如果指针让你神经过敏,MonoTouch的是你的朋友。 不要听谁认为你是一个开发胆小鬼如果真的发生了,你不喜欢的指针(或C等)的反对者。 我曾经走动与IBM ROM BIOS袖珍参考的副本,当我在写汇编,并迫使我的电脑变成有趣的视频模式和写我自己的字体渲染位,他们和(当然没用)窗口系统,我没有”牛逼认为在QuickBasic开发者是wusses。 我是一个开发的QuickBasic(除休息)。 从来没有书呆子大男子主义屈服。 如果你不喜欢C,如果你不喜欢的指针,如果你想留尽量远离手动内存管理越好(和,是公平的,它不是坏ObjC的话),然后。 .. MonoTouch的。 并且不采取任何废话吧。
你想针对用户或企业? 它没有多大关系给我,但仍有人在那里的边缘,而事实是:如果你使用苹果的堆栈,你可以创建一个小得多的下载包。 我一直在MonoTouch的打过来,我有一个体面的小应用程序去,一旦被压缩,下到约2.7 MB(提交分发应用程序时,您压缩它 - 当应用程序被从商店下载的,他们”重新拉链 - 所以搞清楚,如果你的应用是要来的下10MB OTA限制时,首先压缩的吸盘 - 你将与MonoTouch的惊喜)。 但是,MT幸福放在一边,半MEG对近三年(举例来说)是的东西,如果你的目标最终用户,可能对你很重要。 如果你正在考虑企业的工作,几MB都不会有问题的。 而且,仅仅是明确的 - 我将要soonishly提交基于MT的应用程序商店,我也没有任何问题与大小。 不打扰我。 但是,如果在这个时候,会关注你 ,那么苹果的堆栈赢得这一个。
做任何XML的工作? MonoTouch的。 期。
字符串操作? 日期操作? 我们已经习惯了与.net的一切-AND-的厨房散热器框架上百万其他的小东西? MonoTouch的。
网页服务? MonoTouch的。
在语法上,他们都有自己的优势。 Objective-C的趋向,你必须把它写得更加详细。 你会发现自己写的C#代码,你会不会有ObjC写的,但它是双向的。 这个特殊的话题可以写一本书。 我更喜欢C#语法,但在我最初得到在此之后,是-鬼神以Objective-C的反应,我已经学会去享受它颇有几分。 我取笑它在谈判中位(这是开发者怪异习惯使用C#/的Java /等等。谁),但事实是,我在我的心脏一个Objective-C形斑,这让我高兴。
你打算使用Interface Builder? 因为,即使是早期的版本,我觉得自己做的要少得多打造我的IB用户界面,然后在代码中使用它们。 感觉就像整个步骤是从做事的Objective-C / IB方式失踪,我敢肯定,这是因为整个步骤是从的Objective-C / IB做事的方式丢失。 到目前为止,我不认为我已经充分测试,但到目前为止 ,MonoTouch的是赢家这里你差多少工作要做。
你觉得它的乐趣,学习新的语言和平台? 如果是这样,iPhone有很多提供,而苹果的筹码很可能让你出你的舒适区-这,对于一些开发者,是有趣的 (嗨-我的开发者之一-我开玩笑,并给苹果很难,但我已经通过苹果的工具有很多有趣的学习iPhone开发的)。
有这么多的事情要考虑。 价值是如此抽象。 如果我们谈论的成本以及它是否是值得的,答案都归结到我的第一个项目符号项:如果这是生意,如果你能得到的工作,你会做你的钱回来。
所以......这是关于客观,因为我可以。 这是你可能会问自己的短名单,但它是一个起点。
个人(让我们放下客观性片刻),我喜欢并同时使用。 我很高兴我第一次知道了苹果堆。 对我来说,学习和使用MonoTouch的运行时,我已经知道我的苹果全球各地的方式很简单。 正如其他人所说,你还是会与CocoaTouch合作 - 它只是要在一个.Net的美化版环境。
但是,还有比这更。 谁没有使用MonoTouch的人往往停在那里 - “这是一个包装等等等等等等” - 这不是MonoTouch的。
MonoTouch的,您可以访问什么CocoaTouch所提供的,同时还让您获得什么(子集).NET所提供的,一个IDE有些人觉得更舒服(我就是其中之一),与界面生成器更好的集成,虽然你没有得到完全忘记内存管理,你会得到一个不错的程度的回旋余地。
如果你不知道,抢苹果的堆栈(免费),并抓住MonoTouch的EVAL栈(完全免费)。 直到你加入苹果公司的开发计划,既将只对运行模拟器,但是这足以帮助你,如果你喜欢大大一个到另一个,并可能MonoTouch的是,对你来说,值得$ 399
不要听狂热者 - 他们往往是谁没有使用他们毁谤技术的那些:)
有一个在这个帖子有很多传闻从没有尝试过的MonoTouch 和 Objective-C开发者。 这似乎是大多是Objective-C的开发商从来没有试过的MonoTouch。
我显然有失偏颇,但你可以检查出什么MonoTouch的社会已经高达:
http://xamarin.com
在那里,你会从那些在这两个Objective-C和C#开发的开发人员发现了几篇文章。
所以,我的回答到以前类似的问题,是学习的Objective-C。 (另外,不要忘了调试支持)
这可能会得罪一些,但说实话,如果你打算做任何严重的发展,你应该学习Objective-C。 不知道在iPhone开发的Objective-C将只是一个障碍。 你将不能够理解的例子很多; 你必须处理单的怪癖,而如果你有Objective-C中的使用知识,你可以得到很多多出来的平台文档。
就个人而言,我不明白,说增加的信息,您赞成使用单在平台的本地语言的需要量的位置。 这似乎有点适得其反给我。 我想,如果这是一个非常昂贵的提议(学习一门新的语言),那么它可能是值得花费在基本的编程概念的一些时间,以便学习新的语言是一个相当便宜的命题。
另一位用户也写了这一点:
MonoTouch的现在是你更加容易。 但后来更难。
例如,当新种子出来,你需要再次进行测试,但突破的MonoTouch由于某些原因,会发生什么?
通过与单声道坚持,任何时候你正在寻找为你来翻译框架资源弱智到你将如何与单使用它们。 您的应用程序二进制文件会比较大,开发时间,几个月到的Objective-C,和其他应用程序开发后没有那么多快将有更多的比你占优势,因为他们使用的是本机平台。
另一个考虑是,你正在寻找使用C#,因为你更熟悉的莫过于的Objective-C语言。 但绝大多数为iPhone的学习曲线是不客观的-C,它是框架 - 你将不得不调用与C#为好。
对于任何平台,您应该使用直接表达了该平台的设计理念的平台 - 在iPhone上,也就是Objective-C的。 想想这从反向的角度,如果用来在GTK程序想写的Windows应用程序在Linux开发人员,你会认真地建议他们不要使用C#和坚持GTK因为它是“容易”他们这样做呢?
使用Mono是不是一个拐杖。 有很多事情,把它添加到iPhone OS。 LINQ,WCF,一个Silverlight应用程序之间共享代码,一个ASP.NET页面,一个WPF应用程序,Windows窗体应用程序,还有单声道Android和它的Windows Mobile正常工作。
所以,你可以花很多时间写的Objective-C(你会从许多研究看到在C#中完全相同的代码示例是显著低于OC写),然后复制它所有其他平台。 对于我来说,我选择了MonoTouch的,因为云应用程序我写会有很多接口方面,iPhone仅是其中之一。 有WCF数据从云到MonoTouch的应用程序流是出奇的简单。 我有一个在各个平台之间共享,然后只需要编写为iPhone / WinMobile /安卓/ Silverlight的/ WPF / ASP.NET部署一个简单的表示层核心库。 随着产品的不断向前发展,因为所有的功能将不得不被复制,而不是重用重塑这一切在Objective-C将是既为初始开发和维护的时间的巨大浪费。
谁是在侮辱的MonoTouch或影射的是用户需要拐杖缺乏的是什么意思,有唾手可得的.NET框架的大图片,也许人们不会从做的方式呈现理解逻辑的适当分离,即可以跨平台和设备来重复使用。
Objective-C的是有趣的,从许多共同的语言有很大不同。 我喜欢挑战,学习不同的方法......但不是当这样做妨碍我的进步或产生不必要的重新编码。 有一些关于iPhone SDK框架真正伟大的事情,但所有的伟大与MonoTouch的和削减了所有的手动内存管理的全面支持,减少了代码执行同样的任务所需的时间,让我可以重新使用我的组件,并且使我的选项打开,以便能够移动到其他设备和平台。
我切换。 MonoTouch的让我写的应用程序至少3-4倍的速度(每月4个应用程序相比,我的老每月1中的OBJ C)
很多少打字。
只是我的经验。
如果这是唯一的iPhone应用程序,你永远都开发了,你还可以在开发Mac应用程序零利率,永远,那么MonoTouch的可能是值得的成本。
如果你认为你会永远开发更多的iPhone应用程序,或将永远希望做一些Mac的本地开发,它可能是值得学习Objective-C和相关框架。 另外,如果你是程序员的是喜欢学习新事物的类型,这是一个有趣的新范式来研究。
我个人认为,你将有一个更好的时间只是学习的Objective-C。
简而言之:
我发现,像团结和MonoTouch的项目都应该“节省时间”,但最终您将需要反正去学习他们的领域特定语言,将在次侧步的东西。 所有这一切都可能会带你一样长,因为它会学习你试图避免学习(日历时间)的语言。 最后,你未保存的任何时间,你是紧耦合的一些产品。
编辑:我从未想过要暗示什么负面的.NET我正好是它的忠实粉丝。 我的观点是,增加了复杂的多层只是因为你还不熟悉的古怪objc括号标记并没有真正多大意义了我。
要添加到别人已经说过的(好!):我的感觉是,你基本上加倍你不必担心臭虫的数量,将在MonoTouch中的那些已经对那些在iPhone OS。 更新新的操作系统版本将会比正常的更痛苦。 呸,各地。
唯一引人注目的情况下,我可以看到MonoTouch的是,有很多很多的C#程序员和C#代码躺在附近,他们必须利用iPhone上的组织。 (排序店甚至不会眨眼在$ 3500)
但是,任何人都从头开始,我真的不能把它看成值得或明智的。
三个字:LINQ到SQL
是的,这是非常值得的$。
这是我想补充,即使有一个公认的答案 - 谁是说,苹果公司将不只是拒绝有被用单触摸内置招牌的应用程序?
我会花时间在Objective-C主要是因为所有的帮助,你可以从这样的网站获得。 一个Objective-C的实力的的是,你可以使用C和C ++代码,并且有很多的项目,在那里,是行之有效的 。
另一件事是,你的代码(选择语言)将通过苹果的支持。 它的iOS 5.x的例如消除了像MonoTouch的第三方解决方案的支持? 你会告诉你的客户呢?
也许它能够更好地使用像HTML5的平台独立的解决方案,如果你不是整个准备移动到Objective-C的?
我一直在使用MonoTouch的几个月现在,我移植我的一半的ObjectiveC完成的应用程序,所以我可以在将来的某个时候支持Android。
这里是我的经验:
坏位:
Xamarin工作室。 独立开发像我这样的,我们不得不使用Xamarin工作室。 每星期它越来越好,开发者们在论坛上识别和修复bug非常活跃,但它仍然很慢,经常挂,有很多的bug和调试是非常慢也。
构建时间。 建设我的大 (挂)应用程序来调试设备上可能需要几分钟,这是比较的XCode几乎立即部署。 建筑为模拟器(非投资相连)是有点快。
MonoTouch的问题。 我已经经历所造成的事件处理内存泄漏问题,而不得不把一些很丑陋的解决方法,以防止泄漏,如安装和当进入分离事件并留下意见。 该Xamarin开发人员正在积极寻找这样的问题。
第三方库。 我花了相当多的时间转换/结合的ObjectiveC库在我的应用程序使用,虽然这是越来越与自动化软件,如目的记号笔更好。
较大的二进制文件。 这并没有真正困扰我,但认为我会提到它。 IMO一对额外的MB的是什么,这些天。
好位:
多平台。 我的朋友高兴地从我的核心代码库创建我的应用程序的Android版本,我们在并行正在开发,并承诺在Dropbox的远程Git仓库,它的顺利。
。净。 在C#.NET的比目标C IMO好得多。
MonoTouch的。 在相当多的iOS一切都在.NET是镜像,它是相当简单的把事情的工作。
Xamarin。 你可以看到,这些家伙真的努力改善一切,让发展更顺畅,更容易。
我绝对推荐Xamarin的跨平台的开发,特别是如果你有没有钱用商业版或企业版与Visual Studio的工作。
如果你只创建一个永远不会被需要在其他平台上的iPhone应用程序,你是一个独立开发者,我会用Xcode和Objective C的坚持现在。
正如有人用这两个C#经验以及Objective-C的,我会说对大多数人Xamarin将是非常值得的钱。
C#是一个很好的设计语言和C#的API是好的设计也是如此。 当然,在Cocoa Touch API的(包括UIKit的)有很大的设计为好,但语言可以在几个方面加以改进。 当在C#编写相比,写在Objective-C相同的代码,你可能会更有效率。 这是由于以下几个原因,但有些原因是:
C#有类型推断 。 类型推断使得编写代码更快,因为你不必“知道”在赋值的左侧的类型。 这也使得重构更方便,更节省。
C#有泛型 ,这将减少错误与同等的Objective-C代码(虽然有在Objective-C一些变通,在大多数情况下,开发商会避开它们)。
最近Xamarin增加了支持异步/等待 ,这使得编写异步代码非常容易。
您可以重复使用在iOS,Android和Windows Phone的代码基础的一部分。
MonoTouch的主要实现CocoaTouch API的一个非常直接的方式。 例如:如果你有经验CocoaTouch,你就会知道在哪里可以找到类中的MonoTouch(MonoTouch.UIKit包含类的UIButton,UIView的,UINavigationController的,等等,同样MonoTouch.Foundation了类NSString的控制, NSData的,等...)。
Xamarin会给用户一个本土经验,不像像的PhoneGap或钛的解决方案。
现在的Objective-C拥有超过C#一定优势,但在C#编写的应用程序大多数情况下,通常会导致更少的开发时间和更干净的代码和更少的工作端口属于同一个应用到其他平台。 一个值得注意的例外可能是高性能的游戏依赖于OpenGL。
MonoTouch的库的成本是完全跑题了。 你不应该使用单声道为你的iPhone应用程序的原因,就在于它是一个拐杖。 如果你不能懒得学习本地工具,那么我没有理由相信你的产品是值得下载。
编辑:4/14/2010应用程序使用MonoTouch的书面不符合iTunes商店。 这是理所应当的。 苹果看到了大量的浅口的Mac上使用的跨平台工具包一样的Qt,或Adobe自己的部分重新实现系统7工具箱,以及长期和短期的是,他们只是不够好。