适用于iphone应用的MonoTouch和C#VS Objective C.

问候,我是一名C#程序员。 我打算开始为iphone开发应用程序但是我不确定我是否应该在MonoTouch下使用C#或者只是使用iphone OS的本地语言Objective C.

使用C#或Objective C的iphone应用程序有不同的程序吗?

使用C#为iphone编程应用程序是否存在限制,或者它可以像Objective C那样开发iphone应用程序吗?

MonoTouch包含大部分但不是全部的iPhone SDK。 所以,是的,你还有一些你不能做的事情,但它们相对较少而且相差甚远。

许多.Net人员发现他们使用MonoTouch更有效率(至少在最初阶段),因为他们可以利用他们现有的技能。 另一方面,没有什么比用土地的母语工作,只需要更长的时间。 您将不得不学习一些Objective-C,因为世界上大多数文档都使用它(和/或C级CoreFoundation API)。 Objective-C的动态性质一开始会让人觉得陌生,但是一旦你完全了解它,你会发现它很自由。 在我的职业生涯中使用过多种语言后,我发现Objective-C(以及Cocoa API)是最愉快的开发体验之一。

这是一个Monotouch开发人员的答案,而不是一些猜测人们浏览博客的工作。

你买过Monotouch牌照了吗? 如果没有那么明确客观-C将是首选。 如果您已经购买了许可证,那么在Monotouch中开发应用程序是有意义的,因为:

  • 域名和业务逻辑可以在今年晚些时候轻松移植到Windows Mobile 7应用程序中
  • 即将推出的Monodroid也是如此,API也很容易移植到Java。
  • 控制器,视图和整个Monotouch系统栏static void main可以很容易地转换为objective-C。 名称都相同,但在Pascal情况下。

至于应用程序被接受 – 到目前为止Apple已经让Monotouch应用程序通过。 我并不是说他们不会突然说“不!你应该使用目标-C”,但是对于他们来禁止像Stackoverflow这样的高端网站上的SO iPhone客户端将是糟糕的公关。

Apple在他们的演示中使用应用程序打破了他们自己的SDK(Tap Tap Revolution就是其中之一),并且十分之一的appstore畅销游戏使用了非客观C的健康部分。

Monotouch是直接映射到Cocoa和UIKit 。 你需要有一个mac来使用编译器和IDE。 据我所知,Flash没有这样的限制,它的UI在强制像UINavigationController,UITabViewController,UIAlertView等常见的“widget”设置方面要严格得多。

这是我的看法:如果你生活中绝对没有见过Obj-C代码,那么需要一点时间来适应它。 将SDK与完全不同的事实放在一起,你将不得不学习每一种新方法,如果你努力学习,你可能需要至少几个月才能成为一名普通的开发人员。

相反,使用MonoTouch并使用C#学习整个SDK。 在几周内,您将感到宾至如归,所有课程,界面生成器等等。您将能够以与Obj-C相同的方式开发应用程序,但在C#中。 演示版允许您免费使用所有内容。

然后你决定做什么。 根据Apple的整个问题如何,您可能决定继续使用MonoTouch,或者您可能决定学习Obj-C,并且基本上使用您已经获得的关于SDK的所有知识,这将使转换更容易。

苹果是否允许这样做存在争议。 从表面上看,它似乎不是:

在Apple今天发布的新版iPhone开发者计划许可协议中(以及开发人员必须在下载4.0 SDK beta之前同意),第3.3.1节现在为:

3.3.1 – 应用程序只能以Apple规定的方式使用Documented API,不得使用或调用任何私有API。 应用程序必须最初用Objective-C,C,C ++或JavaScript编写,由iPhone OS WebKit引擎执行,并且只有用C,C ++和Objective-C编写的代码才可以编译并直接链接到Documented API(例如,禁止通过中间翻译或兼容性层或工具链接到Documented API的应用程序。

来自monotouch论坛