在今天的一个本地。net活动上,Mono的使用被“提及”为iPhone开发的替代方案。在c#和。net中非常舒适,这似乎是一个有吸引力的选择,尽管Mono堆栈有一些奇怪的地方。然而,由于MonoTouch的售价为400美元,我有些纠结于这是否是iPhone开发的发展方向。

有人用MonoTouch和Objective-C开发过吗?如果是的话,用MonoTouch开发比学习Objective-C更简单、更快,而且值得花400美元吗?


当前回答

补充一下其他人已经说过的话(好吧!):我的感觉是你基本上把你需要担心的bug数量增加了一倍,把MonoTouch中的bug添加到iPhone OS中已经存在的bug中。更新新的操作系统版本将比正常情况下更加痛苦。恶心,到处都是。

我认为MonoTouch唯一引人注目的情况是,那些有大量c#程序员和c#代码的组织必须在iPhone上使用。(就是那种3500美元都不眨眼的商店。)

但对于任何从零开始的人来说,我真的不认为这是值得或明智的。

其他回答

MonoTouch库的成本完全不是重点。你不应该在你的iPhone应用中使用Mono的原因是,它是一种拐杖。如果您懒得学习本机工具,那么我就没有理由相信您的产品值得下载。

编辑:4/14/2010用MonoTouch编写的应用程序不适合iTunes Store。这是应该的。苹果在Mac上看到了大量的浅端口,使用跨平台工具包,如Qt,或Adobe自己的System 7工具箱的部分重新实现,总之,它们不够好。

如果这是你唯一要开发的iPhone应用程序,而你对开发Mac应用程序毫无兴趣,那么MonoTouch可能是值得的。

如果你想要开发更多的iPhone应用,或者想要做一些Mac原生开发,那么学习Objective-C和相关框架可能是值得的。另外,如果你是那种喜欢学习新东西的程序员,这是一个有趣的新范式。

我个人认为你只学习Objective-C会过得更好。

简而言之:

“学习Objective-C”并不像你想象的那样令人生畏,你甚至会在最初几周后就喜欢上它 你已经熟悉了含有大量*&(){}的“C风格”语法;到处都是 苹果在记录方面做得很好 你将以苹果公司预期的方式与iPhone互动,这意味着你将直接从源头获得好处,而不是通过某种过滤。

我发现像Unity和MonoTouch这样的项目应该“节省你的时间”,但最终你还是需要学习他们的领域特定语言,有时不得不回避一些事情。所有这些可能会花费你学习你试图避免学习的语言的时间(按日历时间计算)。最后你并没有节省任何时间,而是与某些产品紧密耦合。

编辑:我从未想过要暗示任何关于。net的负面信息,我只是碰巧是它的忠实粉丝。我的观点是,仅仅因为你还不习惯古怪的objc括号符号,就添加更多的复杂性层,对我来说真的没有多大意义。

2019年更新:7年过去了。我现在仍然有同样的感觉。当然,使用“领域特定语言”可能是错误的,但我仍然相信,最好直接为您正在使用的平台编写,并尽可能避免兼容层和抽象。如果你担心代码重用和重做,一般来说,你的跨平台应用需要执行的任何功能都可以通过现代web技术来完成。

我已经使用MonoTouch几个月了,我从ObjectiveC移植了我的半成品应用,这样我就可以在未来的某个时候支持Android。

以下是我的经验:

不好的地方在于:

Xamarin Studio. Indie developers such as myself are forced into using Xamarin Studio. It is getting better every week, the developers are very active on the forums identifying and fixing bugs, but it's still very slow, frequently hangs, has a lot of bugs and debugging is pretty slow also. Build times. Building my large (linked) app to debug on a device can take a few minutes, this is compared to XCode which deploys almost immediately. Building for the simulator (non-linked) is a bit quicker. MonoTouch issues. I've experienced memory leak issues caused by the event handling, and have had to put in some pretty ugly workarounds to prevent the leaks, such as attaching and detaching events when entering and leaving views. The Xamarin developers are actively looking into issues like this. 3rd party libraries. I've spent quite a time converting/binding ObjectiveC libraries to use in my app, although this is getting better with automated software such as Objective Sharpie. Larger binaries. This doesn't really bother me but thought I'd mention it. IMO a couple of extra Mb is nothing these days.

好的方面:

多平台。我的朋友很高兴地用我的核心代码库为我的应用程序创建了一个Android版本,我们正在并行开发,并将其提交给Dropbox上的远程Git存储库,进展顺利。 . net。在c# . net中工作比在Objective C中工作要好得多。 MonoTouch。iOS中几乎所有的东西都映射到。net中,让事情正常工作是相当直接的。 Xamarin的。你可以看到这些人真的在努力改进一切,使开发更顺畅和更容易。

我强烈推荐Xamarin进行跨平台开发,特别是如果你有钱使用与Visual Studio合作的商业版或企业版。

如果你只是在创造一款在其他平台上永远都不需要的iPhone应用,并且你是一名独立开发者,那么我现在会坚持使用XCode和Objective C。

我想补充一点,即使有一个公认的答案——谁能说苹果不会拒绝那些有迹象表明是用Mono Touch构建的应用呢?