如果你的创业目标是创建一个 iPhone 应用程序,那么显然你应该学习构建 iOS 应用程序的语言,Objective-C。你的团队已经有 C 的经验,所以应该很容易上手。Big Nerd Ranch 的书籍将在一两周内让您启动并运行(我与 Big Nerd Ranch 无关,我只是认为它们很棒)。
考虑到您的团队没有 C#/.NET 经验,我不明白您为什么要提出 MonoTouch。还有很多其他框架,例如 MonoTouch,包括Titanium SDK (JavaScript)、RubyMotion (Ruby) 等等。所有这些都很棒,但在我看来,这主要是为那些有各自语言经验的人准备的。它们允许您使用您更熟悉的语言编写 iOS 应用程序,但有以下缺点:
- 性能可以一样好,但通常比用 Objective-C 编写的应用程序差一点(有时很多)。
- 学习资源不如 iOS SDK/Objective-C 丰富。有很多人想要制作 iOS 应用程序,其中一些人使用这些框架,但他们在其中被稀释了。只有一小部分可用于 iOS 开发的资源将用于任何给定的框架。
- 这些框架都是基于 iOS SDK/Objective-C 的,所以自然开发总是落后一步。如果 Apple 在下一版本的 iOS SDK 中推出全新的 API,您将不得不等待这些框架适应(用 Objective-C 编写的应用程序也可能会崩溃,但基于第 2 点)。
- 大多数这些框架都需要熟悉 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 文档,并将方法转换为您选择的框架。
- Objective-C 生态系统不断发展,出现了CocoaPods、bwoken等很酷的新项目。这些项目主要是在开发 Objective-C 和 Xcode 的基础上进行的。将它们配置为与您选择的框架一起工作几乎总是会给您带来额外的时间和工作。
以上几点通常使我没有过多地研究这些其他框架。它们都非常酷,但它们在采用方面的主要优点似乎是促进了在 Objective-C 之外具有深厚技能的人的开发,或者允许缺乏资源投资于 Android和iOS 的小型团队进行跨平台开发(以及Windows Phone) 程序员。希望对采用者而言,收益超过上述成本。
此外,使用 MonoTouch 编写代码对使用 Android 进行跨平台开发有什么好处吗?
我想会的。事实上,MonoTouch 主页吹捧这是使用该框架的主要优势。我不太确定视图/控制器类,因为它们似乎会被绑定到UIKit
中,但是封装在模型中的逻辑应该很容易移植。
长话短说,我认为您和您的团队应该坚持使用 Objective-C 进行 iOS 开发。