首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不推荐使用MonoTouch进行iPhone开发?

为什么不推荐使用MonoTouch进行iPhone开发?
EN

Stack Overflow用户
提问于 2012-06-27 19:37:04
回答 6查看 16.1K关注 0票数 12

我们想为iOS和安卓智能手机开发一个应用程序。我们主要使用Microsoft技术来开发我们的应用程序。我们认为,如果我们将MonoTouch和Mono用于安卓,我们只需要维护一个代码库,每个设备只有一个不同的UI层。

因为目前我们的小团队中没有人开发过智能手机应用程序,而且我们很快就需要它,所以我们想把它外包出去。我们询问了其他公司,对于iPhone开发,他们更喜欢MonoTouch还是Objective C。他们中的大多数人说,他们会选择Objective C。他们说,Objective C提供了更多的功能和可能性,它更快,对于MonoTouch来说,苹果未来有可能不再支持它。这一切都是真的吗?还是有其他更倾向于目标C的原因?我知道周围还有其他类似的帖子,但他们没有回答我的问题,特别是关于苹果对MonoTouch的支持。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-06-27 23:11:25

应用程序。我们认为,如果我们将MonoTouch和Mono用于安卓,我们只需要维护一个代码库,每个设备只有一个不同的UI层。

如果你正确地构建你的应用程序,这是可能的。如果不是:不是。

如果您使用Java+ObjC+C# (用于WP7 / Win8 metro等),那么这根本不是一个选项

因为目前我们的小团队中没有人开发过智能手机应用程序,而且我们很快就需要它,所以我们想把它外包出去。我们询问了其他公司,对于iPhone开发,他们更喜欢MonoTouch还是Objective C。他们中的大多数人说,他们会选择目标C。

如果你要外包它,你应该指定你想要它写什么,当然?如果你需要在内部支持它,而你只有C#技能,那么MonoTouch等对你来说更有意义,因为你是买单的人!

他们说Objective C提供了更多的功能和可能性,

FUD,也是不正确的。Monotouch提供了完整的API。如果它不在那里,就像Xamarin一样绑定它(他们以前经常这样做)

更快

我很想看看基准测试。是的,从技术上讲,它在某些情况下可以更快,但在一般情况下,MonoTouch相同或更快。

程序员错误是iOS应用程序性能问题更常见的原因。例如,不从UI线程中获取东西(这在MonoTouch中比在ObjC中更容易做,这些块对此有很大帮助),或者花了太长时间才能离开FinishedLaunching (如果你愿意,"main“方法,尽管它并不是真正的……)

垃圾收集和诸如linq、xml/json解析、泛型和收集之类的东西也非常有价值,而且速度非常快。

对于

和MonoTouch来说,苹果未来有可能不再支持它。

是的,是有机会的。蒂姆·库克也有可能卷走苹果数十亿美元,买下整个夏威夷(而不是拉里·埃里森( Larry Ellison)“我就买下这个岛”)。但现在这种可能性相当小。

是不是所有这些都是真的,还是有其他原因更倾向于使用目标C?我知道周围还有其他类似的帖子,但他们没有回答我的问题,特别是关于苹果对MonoTouch的支持。

苹果不支持MonoTouch。Xamarin做到了,而且他们做得非常好。除了他们的产品XCode之外,苹果什么都不支持。

苹果确实允许MonoTouch应用程序(有很多)。换个角度看:通常,排名前100的游戏中有95%是使用Unity3D编写的,这是基于相同的技术(提前编译C#代码并嵌入Mono.NET框架的精简版本)。

选择ObjC有以下原因:

  • 你已经知道ObjC和CocoaTouch并且喜欢它。
  • 你的团队已经知道ObjC和CocoaTouch了,或者你可以很容易地雇佣知道的人(注意:据我所知,iOS开发人员的雇佣成本非常高,如果你能找到他们的话)
  • 你需要在测试版发布的当天使用。请记住,您可以使用当前的MonoTouch并将其部署到带有测试版的iOSREDACTED设备。你只是还不能使用iOS6中的新东西(Xamarin说“大约2周”,现在应该是...)。还要记住,你不能将应用程序部署到使用beta SDK构建的应用商店,即使你不使用其中的任何东西。你甚至不能在你的产品描述中提到iOSREDACTED (我试过了)
  • 你喜欢squareBrackets和squareBrackets:@“奇怪的语法东西”;

现在,构建一个跨平台的共享代码应用程序会是一件容易的事情吗?见鬼,不。对于一个非平凡的应用程序来说,这是一个非常复杂的开发过程。但这就是软件开发的乐趣所在:如果它很简单,那就会很无聊!获取Greg Shackles一书( http://www.amazon.com/dp/1449320236 ),了解iOS+WinPhone+Android风格开发所需的内容。

票数 40
EN

Stack Overflow用户

发布于 2012-06-27 20:13:09

我的预感是,与你交谈过的公司都习惯于使用Objective-C。这就是他们的技能所在,这也是他们不愿偏离自己道路的最大原因。其他原因可以从两个方面进行论证。

诚然,没有人能预测苹果会做什么,但苹果会像2010年夏天那样禁止第三方工具包和API的可能性很小。这只是很短的一段时间,他们完全改变了这一决定。他们目前的重点是让应用程序开发变得更容易,这意味着保持该领域对替代开发方法的开放。我想MonoTouch是安全的。

至于速度,C#通常会产生非常快的可执行文件。它们可能没有Objective-C那么快,但我怀疑你会注意到不同之处。我记得在某个地方看到过一个网站,它显示C#在某些测试中优于C/C++,但那是在.NET环境下,而不是Mono...不幸的是,我再也找不到参考资料了。我会继续找的。但速度的底线是C#的速度非常好。它不像BASIC vs C,更像Java/JIT vs C。

C#给了你很多很多(!)相对于Objective-C的优点,它们已经在其他Stack Overflow答案中列举过,所以我不在这里重复它们。你可以很容易地找到它们。

我显然是MonoTouch的粉丝,但我确实必须说一件事:我认为公司认为因为他们精通C#/.NET就可以很容易地使用MonoTouch开发和/或维护iOS应用程序的想法是错误的。这不是真的,因为MonoTouch基本上是苹果应用程序接口之上的一个C#层,这意味着你必须学习CocoaTouch的做事方式。你有应用程序委托,视图控制器和所有UIKit的东西。这是一个真正的学习曲线。但是如果你精通C#,MonoTouch将会给你很大的帮助。

更新:

我找到了一篇关于C#速度的文章:Head-to-head benchmark: C++ vs .NET

票数 11
EN

Stack Overflow用户

发布于 2012-06-27 20:02:24

实际上,我在开发的每个应用程序中都使用了MonoTouch。性能从来都不是问题,我无法想象使用Objective-C对我来说有多糟糕。我在美国的应用商店里有两个排名前十的应用程序:"Draw A Stickman“和"Draw A Stickman:第2集”(不用担心,我们正在开发更多)。

如果您了解C#和.Net,与尝试学习Objective-C相比,您在工作效率方面的收益将是巨大的。在iOS开发之前,我是一名C# .Net开发人员(仅适用于Windows),向MonoTouch的过渡非常棒。

如果您喜欢Linq、在不到100行的时间内解析XML语言、垃圾收集、泛型、简单的多线程以及没有奇怪的方括号,那么MonoTouch非常适合您。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11225294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档