C# · 12月 26, 2021

c# – MonoTouch v.Objective-C for new iPhone devs

我正在与一家小型创业公司合作,目的是创建一个iPhone应用程序.我们团队中的程序员都知道C和 Java,但是我们没有ObjC/C++#/ iPhone体验 – 我们将会学习一些东西,无论什么.所有我在这个问题上看到的问题都是从C#程序员进入iOS的角度,所以我没有任何关于学习一个或另一个的相对优点的信息.

所以,我想知道的是C#和Objective-C对于新程序员的相对优点,在这些方面:

>表现
>使用方便
>轻松学习
>可靠性(即,新的iOS版本是否会破坏MonoTouch应用程序?)

此外,在MonoTouch中撰写的内容对于使用Android的跨平台开发有什么好处?

解决方法 如果您的创业的目标是创建一个iPhone应用程序,那么显然你应该学习iOS应用程序与Objective-C一起构建的语言.您的团队已经有了C的经验,所以开始应该很容易. The Big Nerd Ranch books将让您在一两个礼拜中开始运行(我不与Big Nerd Ranch联系,我只是认为他们很棒).

我不明白为什么你带上MonoTouch,考虑到你的团队没有C#/ .NET的经验.有许多其他框架,如MonoTouch,包括Titanium SDK(JavaScript),RubyMotion(Ruby)等等.所有这些都是伟大的,但正如我所看到的,主要是那些有各自语言经验的人.它们允许您使用您更熟悉的语言编写iOS应用程序,但具有以下缺点:

>性能可以和Objective-C中写的应用程序一样好,但通常有一点(有时甚至很多).
>学习资源不如iOS SDK / Objective-C那么丰富.有许多人想要制作iOS应用程序,而那些人有些使用这些框架,并且在它们之间被稀释.只有少部分可用于iOS开发的资源将用于任何给定的框架.
>这些框架基于iOS SDK / Objective-C,所以自然的发展总是落后于后.如果苹果在下一个版本的iOS SDK中推出了新的API,那么您必须等待这些框架的适应性(用Objective-C编写的应用程序可能会中断,但是将更容易处理基于点#2).
>大多数这些框架需要熟悉iOS SDK.您仍然需要知道应用程序在启动时调用 – (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法,但另外您还需要记住如何将其转换为适当的方法MonoTouch:public override bool FinishedLaunching(UIApplication app,NSDictionary options). iOS SDK是巨大的,大多数iOS开发人员依靠苹果的文档来了解.因此,您将看到针对Objective-C编写的api文档,并将方法转换为您选择的框架.
> Objective-C生态系统不断发展,酷派新项目如CocoaPods,bwoken等.这些主要是开发Objective-C和Xcode.配置它们与您选择的框架一起工作几乎总是会导致您额外的时间和工作.

上述几点总体上使我不会太多地研究任何这些其他框架.他们都很酷,但是他们在采用方面的主要优点似乎是促进了Objective-C之外的深入技能的人员的开发,或允许小团队的跨平台开发缺乏投入Android和iOS的资源(和Windows Phone)程序员.希望利益超过上述用户的成本.

Also,would writing in MonoTouch have any benefits for cross-platform development with Android?

我想是这样.事实上,MonoTouch homepage将这作为使用框架的主要优点.我不太了解view / controller类,因为这些类似于将它们绑定到UIKit中,但封装在模型中的逻辑应该是相当容易的端口.

漫长的故事,我想你和你的团队应该坚持使用Objective-C进行iOS开发.