我们想为iOS和安卓智能手机开发一个应用程序。我们主要使用Microsoft技术来开发我们的应用程序。我们认为,如果我们将MonoTouch和Mono用于安卓,我们只需要维护一个代码库,每个设备只有一个不同的UI层。
因为目前我们的小团队中没有人开发过智能手机应用程序,而且我们很快就需要它,所以我们想把它外包出去。我们询问了其他公司,对于iPhone开发,他们更喜欢MonoTouch还是Objective C。他们中的大多数人说,他们会选择Objective C。他们说,Objective C提供了更多的功能和可能性,它更快,对于MonoTouch来说,苹果未来有可能不再支持它。这一切都是真的吗?还是有其他更倾向于目标C的原因?我知道周围还有其他类似的帖子,但他们没有回答我的问题,特别是关于苹果对MonoTouch的支持。
发布于 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有以下原因:
现在,构建一个跨平台的共享代码应用程序会是一件容易的事情吗?见鬼,不。对于一个非平凡的应用程序来说,这是一个非常复杂的开发过程。但这就是软件开发的乐趣所在:如果它很简单,那就会很无聊!获取Greg Shackles一书( http://www.amazon.com/dp/1449320236 ),了解iOS+WinPhone+Android风格开发所需的内容。
发布于 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
发布于 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非常适合您。
https://stackoverflow.com/questions/11225294
复制相似问题