如果有MonoTouch可用,为什么我们还要使用Mac环境(SDK、Xcode+Interface Builder)?
MonoTouch相对于Xcode有哪些劣势?
如果有MonoTouch可用,为什么我们还要使用Mac环境(SDK、Xcode+Interface Builder)?
MonoTouch相对于Xcode有哪些劣势?
我总是喜欢使用与我正在开发平台最为哲学相近的语言。
也就是说,整个平台所构建的框架都是用Objective-C编写的。因此,如果你自己在一段时间内使用Objective-C,就能够理解为什么事情被构建成这个样子,并且还可以预测可能存在的调用或行为。
就像我不会用除Silverlight以外的任何东西开发Windows Phone 7一样,我也不会用除Objective-C以外的任何东西来编写iPhone,以便充分利用平台的优势。新语言?那是一种好处,因为人们应该时不时地学习新语言。而且使用你已经了解的语言并不能为你节省太多时间,因为你大部分的时间将花费在学习框架上(而MonoTouch可以让你调用这些框架)。
我觉得这个问题也需要MT派回答。
为什么要吃鱼,如果可以吃肉呢?为什么说德语,如果英语已经被理解了呢?为什么看CNN,如果有FOX呢?为什么投共和党的票,如果有民主党呢?为什么……等等。
这是你的选择!如果你长时间使用C#并想在iOS上快速获得结果,请选择MonoTouch。特别是如果你有一系列可重用的API或方法,MT是最好的选择。如果你想学习一门新语言(ObjC),那就去学吧。即使你最终使用MT,了解ObjC也非常重要,因为它有助于你了解为什么事情会按照这样的方式工作。
你好,这是我的个人观点:
我也在.NET世界里待了一段时间,当iPhone推出创建本地应用程序的功能时,它吸引了我所有的注意力,我真的试图学习Objc,我拿了两本书开始尝试了一个月,然后放弃了iPhone编程,因为你必须做许多比.NET多得多的事情,例如GC。
当Miguel de Icaza推出MonoTouch时,我试了试,我意识到我之前完成的大部分代码都是完全可用的(我总是试图将ui代码与业务代码分离),这确实是.NET在iPhone上的重点,将大部分已经完成的业务逻辑带到设备上。
此外,在objc上,您不会找到任何类似于LINQ或var关键字的东西,使用MonoTouch消耗Web服务只需点击几下等等。
如果您想针对Android平台进行目标设置,则还有MonoDroid(monodroid.net),该稳定版将在今年晚些时候发布,您现在可以在beta状态下尝试。另外,如果您想针对Mac OSX进行目标设置,还有MonoMac。因此,您可以在所有这3个平台(以及所有支持mono/.NET的平台)之间轻松共享类库,更不用说它也将在Windows上工作,反之亦然(如果可能的话)(还有别忘了WP7)。
您唯一需要担心的是UI,但大部分业务逻辑应该可以工作。这里是MonoTouch支持的.NET程序集的完整列表http://monotouch.net/Documentation/Assemblies,而且MonoTouch向所有CocoaTouch API公开了C#/CIL绑定。
此外,MonoTouch团队的支持非常棒,您只需进入IRC并提出问题,它将立即得到回答,邮件列表也是如此:)
我真的很喜欢MonoTouch,我知道没有语言适用于所有任务,Objective-C也不例外。
每个示例、教程和文档都将用Objective-C编写,而Mono只是在幕后调用Objective-C代码。如果你真的觉得值得用C#进行心理翻译,并在你的代码中添加一个额外的层次,请随意尝试。
我还没有找到任何一本iOS书籍能够像这两个资源一样清晰友好。
最后,不要购买任何不明确说明是针对iOS5和XCode 4的书籍。这个最新版本的XCode与之前版本有太大的不同,使它们变得无用。
声明:我不在本帖提到的任何资源公司工作!