2010-04-23 87 views
11

问候语, 我是C#程序员的家伙。我打算开始为iphone开发应用程序,但我不确定应该在MonoTouch下使用C#还是仅使用iPhone OS的本机语言Objective C。MonoTouch&C#VS Objective C for iphone应用程序

是否有与使用C#或目标C?

是否有限制使用C#来为iPhone编程应用程序,或者它可以像Objective C一样可以完成开发iPhone应用程序?

+2

我认为,这个问题涵盖了相同的地一个在这里问:http://stackoverflow.com/questions/1583856/is-monotouch-worth-the-cost-or-should-i-just-learn- objective-c – 2010-04-23 13:08:45

+0

它确实......但现在这个问题有不同的上下文,因为苹果的新术语不允许(技术上)交叉编译应用程序。 – Armstrongest 2010-04-29 23:16:00

回答

12

MonoTouch包装大多数但不是所有的iPhone SDK。所以,是的,有些事情你还做不到(但是),但是它们相对较少,而且相距甚远。

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

+0

“他们选择让MonoTouch应用程序通过”的说法是什么? – 2010-04-25 17:40:19

+0

@yar,几位开发者报告说,他们接受新的开发者许可证后接受了他们基于MonoTouch的应用程序。目前还不清楚苹果是否选择不为MonoTouch强制执行β3.3.1(我的怀疑),或者苹果是否还没有开始执行它。 – 2010-04-25 20:23:22

+0

@Barry Wark,我认为目前还没有办法 - 让Apple知道该应用是否使用了MonoTouch?这是真的吗(我的意思是,鉴于目前的知识)? – 2010-04-25 22:58:07

2

苹果是否会允许这个问题存在争议。在它面前,它似乎并不:

在今天由苹果公司发布了iPhone 开发者计划许可协议 的新版本(和 开发商必须同意之前 下载4.0 SDK测试版)部分 3.3.1现规定:

3.3.1 - 应用程序可能只使用记录的API在苹果规定的方式 ,不得使用 或调用任何私有的API。应用 必须原文为 的Objective-C,C,C++或JavaScript由iPhone OS WebKit的 引擎执行 ,只有C语言编写的代码, C++和Objective-C可以编译和 直接针对链接已记录的 API(例如,链接到 的文档API通过 中间转换或 兼容性层或工具的应用程序禁止使用 )。

monotouch forums

+1

我同意。在苹果公司澄清他们在MonoTouch上的立场之前,我认为这对商业项目是一个严重的风险。 – 2010-04-23 06:14:03

10

这里是一个MonoTouch的开发人员的答案,而不是从人的一些猜测的工作撇去阅读博客。

您是否购买了Monotouch许可证?如果不是那么明确的客观C将是首选。如果你已经购买了许可证的话很有道理,开发在MonoTouch的应用程序,因为:

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

至于应用程序被接受 - 到目前为止,苹果已经让MonoTouch的应用程式通过。我不是说他们不会突然说“NO!THOUALLALL USE OBJECTIVE-C”,但是他们禁止在iPhone等高端网站上使用iPhone的客户端,比如Stackoverflow会是一个糟糕的公关。

在他们的演示苹果使用的应用程序,其突破自己的SDK(丝锥革命是一个),以及1在AppStore的10最畅销的游戏使用没有目标-C的健康部分。

单击是直接映射到Cocoa和UIKit。你需要有一个mac来使用编译器和IDE。据我所知,Flash没有这样的限制,它的UI在强制像UINavigationController,UITabViewController,UIAlertView等常见的“小部件”方面不那么严格。

+0

为了安全起见,我会使用Obj-C,那么你不会冒着浪费时间的风险。 – 2010-04-23 09:59:17

+1

如果它被拒绝了,UI部分肯定会浪费时间。但是查询的这些位稍后可用于Winmo和Android – 2010-04-23 10:06:14

6

这里是我的看法:如果你绝对不会在你的生活中看到的OBJ-C代码,它会需要一些时间来适应它。把它与SDK完全不同的事实放在一起,你将不得不学习每一种新的方法,如果你努力学习,它可能需要至少几个月才能成为一个普通的obj-c开发者。

相反,使用MonoTouch的使用C#学习整个SDK。在几个星期之内,您将感受到所有的类,Interface Builder等等。您可以像使用Obj-C一样开发应用程序,但是可以在C#中使用。演示版本允许您免费使用所有内容。

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

相关问题