9

我正在与一家小型初创公司合作,目标是创建一个 iPhone 应用程序。我们团队的程序员都懂 C 和 Java,但我们没有 ObjC/C#/iPhone 经验——无论如何我们都会学到一些东西。我在这个主题上看到的所有问题都是从 C# 程序员进入 iOS 的角度来看的,所以我没有任何关于学习其中一个或另一个的相对优点的信息。

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

  • 表现
  • 便于使用
  • 易于学习
  • 可靠性(即,新的 iOS 版本会破坏 MonoTouch 应用程序吗?)

此外,使用 MonoTouch 编写代码对使用 Android 进行跨平台开发有什么好处吗?

4

4 回答 4

13

如果你的创业目标是创建一个 iPhone 应用程序,那么显然你应该学习构建 iOS 应用程序的语言,Objective-C。你的团队已经有 C 的经验,所以应该很容易上手。Big Nerd Ranch 的书籍将在一两周内让您启动并运行(我与 Big Nerd Ranch 无关,我只是认为它们很棒)。

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

  1. 性能可以一样好,但通常比用 Objective-C 编写的应用程序差一点(有时很多)。
  2. 学习资源不如 iOS SDK/Objective-C 丰富。有很多人想要制作 iOS 应用程序,其中一些人使用这些框架,但他们在其中被稀释了。只有一小部分可用于 iOS 开发的资源将用于任何给定的框架。
  3. 这些框架都是基于 iOS SDK/Objective-C 的,所以自然开发总是落后一步。如果 Apple 在下一版本的 iOS SDK 中推出全新的 API,您将不得不等待这些框架适应(用 Objective-C 编写的应用程序也可能会崩溃,但基于第 2 点)。
  4. 大多数这些框架都需要熟悉 iOS SDK。您仍然需要知道应用程序- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions在启动时调用该方法,但此外您还需要记住如何将其转换为 MonoTouch 的适当方法:public override bool FinishedLaunching (UIApplication app, NSDictionary options)。iOS SDK 非常庞大,大多数 iOS 开发人员都依赖 Apple 的文档来获得洞察力。因此,您将查看为 Objective-C 编写的 API 文档,并将方法转换为您选择的框架。
  5. Objective-C 生态系统不断发展,出现了CocoaPodsbwoken等很酷的新项目。这些项目主要是在开发 Objective-C 和 Xcode 的基础上进行的。将它们配置为与您选择的框架一起工作几乎总是会给您带来额外的时间和工作。

以上几点通常使我没有过多地研究这些其他框架。它们都非常酷,但它们在采用方面的主要优点似乎是促进了在 Objective-C 之外具有深厚技能的人的开发,或者允许缺乏资源投资于 AndroidiOS 的小型团队进行跨平台开发(以及Windows Phone) 程序员。希望对采用者而言,收益超过上述成本。

此外,使用 MonoTouch 编写代码对使用 Android 进行跨平台开发有什么好处吗?

我想会的。事实上,MonoTouch 主页吹捧这是使用该框架的主要优势。我不太确定视图/控制器类,因为它们似乎会被绑定到UIKit中,但是封装在模型中的逻辑应该很容易移植。

长话短说,我认为您和您的团队应该坚持使用 Objective-C 进行 iOS 开发。

于 2012-05-13T17:54:40.730 回答
7

如果你只是构建一个iPhone应用程序,那么一定要选择 Objective C。但如果你想要一个移动应用程序——可能包括 android、windows phone、windows rt、blackberry、webos 或其他选项——你可能想要仔细查看一些替代平台,其中 MonoTouch 是一个突出的选择。

于 2012-05-13T18:28:04.067 回答
1

Objective C 是 C 的严格超集,因此如果您了解在 ARM 上编译的 C 代码的性能特征,您可以使用您熟悉的 C 子集,iOS UI 除外。

似乎有报道称,经验丰富的 C 程序员在大约 2 周的时间内就开始加快使用 Objective C 编写 iOS 应用程序的速度。但是,当然,无论使用哪种语言,都要在持续的学习过程中学习广泛的框架和 API。

于 2012-05-13T17:51:32.427 回答
0

就性能而言,答案一直是 Objective-C。

也就是说,看看用 HTML5 做这件事。如果您坚持使用加速转换,则应用程序前端的 HTML5 性能会出奇的好。将您的 HTML5 应用程序迁移到 Android 也很容易。

简单的答案是Objective-C。学起来也不是太难。如果你在 C 方面很扎实,在 OOP 方面很扎实,那你会没事的。

于 2012-05-15T02:48:05.830 回答