今天在当地一家电视台上听了一段关于单声道的课程后.Net事件中,MonoTouch的使用被作为iPhone开发的替代品.在C#and中非常舒适.Net,这似乎是一个很有吸引力的 Select ,尽管Mono stack有一些古怪之处.然而,由于MonoTouch的价格是400美元,如果这是iPhone开发的方式,我有点纠结.

任何人都有使用MonoTouch和Objective-C开发的经验,如果是这样的话,使用MonoTouch开发是否比学习Objective-C更简单、更快,反过来又值400美元?

推荐答案

我最近经常看到这个问题(及其变体).让我惊讶的是,人们的react 有多频繁,但却只有answer个.

我有自己的偏好(我喜欢这两个堆栈),但这是大多数"答案"开始出错的地方.它不应该是关于我想要什么(或者其他人想要什么).

以下是我如何决定MonoTouch的价值——显然,我不能客观,但我认为这是非常没有狂热的:

  • 这是为了娱乐还是为了生意?如果你想进入这一领域的咨询业,你可以很快赚回399美元.

  • 你是想彻底了解这个平台,还是"只是"想为它编写应用程序?

  • 你喜欢吗?Net,使用不同的开发人员堆栈会给你带来乐趣吗?同样,我喜欢这两个堆栈(Apple和Mono),但对我来说,MonoTouch让体验更加有趣.我并没有停止使用苹果的工具,但这主要是因为我really do enjoy both stacks岁.我喜欢iPhone,我也喜欢.网在这种情况下,对我来说,单点touch 是一件不需要动脑筋的事.

  • 你觉得和C一起工作舒服吗?我不是说Objective-C,而是C——这很重要,因为Objective-CisC.这是一个很好的、奇特的、友好的OO版本,但是如果指针给了你heebie jeebies,MonoTouch就是你的朋友.如果你碰巧喜欢指针(或C等),不要听那些认为你是开发人员的反对者的话.我过go 常常带着一份IBM ROM BIOS Pocket Reference的副本四处走动,当我编写汇编程序,强迫我的计算机进入有趣的视频模式,并为它们和(无可否认是无用的)窗口系统编写自己的字体渲染位时,我不认为QuickBasic开发人员是胆小鬼.我有一个QuickBasic开发工具(除其他外).永远不要向书呆子的男子气概屈服.如果你不喜欢C,如果你不喜欢指针,如果你想尽可能远离手动内存管理(公平地说,在ObjC中它一点也不坏),那么...单触.别再胡说八道了.

  • 你想针对用户还是企业?这对我来说没什么大不了的,但仍然有人在紧张不安,事实是:如果你使用Apple的stack,你可以创建一个小得多的下载包.我一直在玩MonoTouch,我有一个不错的小应用程序,一旦压缩,降低到大约2.7 MB(当提交应用程序进行分发时,你会将其压缩——当应用程序从应用store 下载时,它们会压缩——因此,当确定你的应用程序是否会低于10MB OTA限制时,首先压缩吸盘——你会对MonoTouch感到惊喜).但是,撇开幸福不谈,如果你瞄准的是终端用户,那么半个梅格和近三个梅格(例如)对你来说可能很重要.如果你考虑的是企业工作,几MB根本不重要.而且,需要明确的是,我将很快向store 提交一个基于机器翻译的应用程序,我对它的大小没有任何问题.一点也不困扰我.但如果这是一个与you有关的问题,那么苹果的堆栈将赢得这一次.

  • 做XML工作吗?单触.时期

  • 字符串操作?约会操纵?还有无数我们已经习惯的小事情.Net的一切和厨房水槽框架?单触.

  • 网络服务?单触.

  • 在句法上,它们都有各自的优势.Objective-C往往更详细.你会发现自己在用C编写代码,你不必用ObjC编写代码,但它是双向的.这个特别的话题可以填满一本书.我更喜欢C#语法,但在克服了我最初对Objective-C的react 后,我学会了享受它.我在谈话中对此开了一点jest(对于习惯C#/Java/等的开发者来说,这很奇怪),但事实是,我心中有一个客观的C形点,这让我很高兴.

  • 你打算使用界面生成器吗?因为,即使在这个早期版本中,我发现自己用IB构建UI并在代码中使用它们的工作也少得多.感觉像是Objective-C/IB做事方式缺少了整个步骤,我很确定这是因为Objective-C/IB做事方式缺少了整个步骤.到目前为止,我认为我还没有足够的测试,但是so far,MonoTouch是赢家,因为你需要做的工作要少得多.

  • 你觉得学习新的语言和平台有趣吗?如果是这样的话,iPhone有很多东西可以提供,而苹果的堆栈可能会让你走出舒适区——对于一些开发者来说,这是fun(嗨,我是那些开发者中的一员——我Jest 说这件事,给苹果公司带来了困难,但通过苹果的工具,我在学习iPhone开发方面获得了很多乐趣).

有太多的事情要考虑.价值是如此抽象.如果我们讨论的是成本以及它是否值得,答案可以归结为我的第一个要点:如果这是为了生意,如果你能得到工作,你马上就能赚回你的钱.

所以这是我所能做到的最客观的.这是一个简短的 list ,列出了你可能会问自己的问题,但这是一个起点.

就我个人而言(让我们暂时放弃客观性),我喜欢并使用这两种方法.我很高兴我先学会了苹果的堆叠.当我已经知道自己在苹果世界的道路时,我更容易用MonoTouch启动和运行.正如其他人所说,你仍将与CocoaTouch合作——它只是在一个新的阶段.网络化环境.

但不止这些.没有使用MonoTouch的人倾向于到此为止——"这是包装纸之类的废话"——这不是MonoTouch.

MonoTouch让您可以访问CoCoatTouch提供的内容,同时也让您可以访问CoCoatTouch的一个子集.Net必须提供一个IDE,一个一些人觉得更舒服的IDE(我就是其中之一),更好地与Interface Builder集成,尽管你不能完全忘记内存管理,但你有很好的回旋余地.

如果你不确定,可以抓取苹果的堆栈(它是免费的),然后抓取MonoTouch eval堆栈(它是免费的).在你加入苹果的开发计划之前,这两款产品都只能在模拟器上运行,但这足以帮助你弄清楚你是否非常喜欢其中一款,以及MonoTouch对你来说是否值得399美元.

不要听狂热者的话——他们往往是那些没有使用他们所指责的技术的人:)

Objective-c相关问答推荐

react 本机WebView菜单项目props 无法在iOS&>=16上使用

NSString "nil or empty" 判断 - 这完成了吗?

Objective-C,如何获取 UTC 时区的当前日期?

核心数据独特属性

多个(两个)持久存储可以与一个对象模型一起使用,同时保持一个到另一个的关系吗?

Objective-C 中的正式协议和非正式协议有什么区别?

在 Interface Builder 中设计 UITableView 的section header

在 Xcode 中为无法识别的 Select 器创建断点

iOS - 应用程序关闭时的核心位置和地理围栏

检测到与加载的库不匹配的 UUID

在运行时判断 iOS 版本?

进入编辑模式时动画自定义绘制的 UITableViewCell

arc4random 和 arc4random_uniform 有什么区别?

具有高质量代码的开源 Objective-C 项目?

NSManagedObjectContext:异常断点在 save: 方法处停止,但没有日志(log)/崩溃/错误

如何在 iOS 7 启动期间更改状态栏样式

如何从 UIColor 对象中获取红绿蓝 (RGB) 和 alpha?

从带有参数的方法名称创建 Select 器

将自定义子视图(在 xib 中创建)添加到视图控制器的视图 - 我在做什么错

在 iOS 6.0 的 Xcode 4.5 中我没有要求的日志(log)消息