27

作为一名 .Net 开发人员,我一直梦想着能够利用我现有的技能 (c#) 为 Iphone 开发应用程序。

这两个程序都需要安装 Mac 和 Iphone Sdk。

Appcelerator Titanium 是我尝试的第一个应用程序,它基于将一些 Iphone 原生 api 暴露给 javascript,以便可以使用该语言调用它们。

Monotouch 起价为 399 美元,因为 Titanium 是免费的,因为它能够部署在 Iphone 上而不是 Iphone 模拟器上。

Monotouch (Monodevelop) 有一个 Titanium 目前缺少的 Ide(但您可以使用任何编辑器,如 Textmate、Aptana ......)

我认为这两个程序最后都会生成一个本地预编译的应用程序(如果我不确定 Iphone 上最终应用程序的大小,因为我认为 .Net 框架调用在 Monotouch 的编译时预先连接)。

我也不确定所有 Iphone api 和功能的全面覆盖。

Titanium 还具有支持 Android 应用程序开发的优势,但作为 ac# 开发人员,我仍然发现 Monotouch 体验更像 Visual Studio 体验。

你会选择哪一个?你对 Monotouch 和 Titanium 有什么体验?

4

7 回答 7

96

就像任何工具或平台或语言或框架或任何问题一样,它应该归结为想要的。

忘记所有如果你想为这个平台开发然后你必须支付你的会费的建议。如果你有兴趣学习 Objective-C、Xcode 和相关的 Apple 位,那么 goferit。我做到了。这很有趣,但我的兴趣是开发 iPhone 应用程序。学习一门新的语言、框架和 IDE 只是一种奖励(我喜欢这些东西)。我开始的时候也是必要的。

自 MonoTouch 发布以来,我一直在使用它,我喜欢它。更喜欢 C# 而不是 Objective-C,而且我喜欢访问 MonoTouch 提供的 .Net (Mono) 框架的子集。有些事情用 .Net 比 Cocoa 更容易做(字符串操作、日期操作、任何XML 等)。

我也喜欢不再需要处理引用计数。我被多年来不必跟踪该级别的资源所宠坏。我不介意必须自己清理,但我不想手动执行我使用过的所有其他现代开发平台自动为我执行的操作。另外,即使对于经验丰富的 Objective-C 开发人员来说,引用计数也不是一件容易的事。有时滚动浏览 OS X 的控制台输出,以查看有多少应用程序由于内存管理问题而崩溃(我知道 - 基本上任何应用程序都可能发生这种情况,但是当你让开发人员过度劳累时,更容易犯下导致这种情况的错误他们的注意力已经被 12 小时的 if this and if that and else this and else that and blah blah blah) 摧毁了。

我仍然使用 Objective-C/Xcode——我真的学会了喜欢 Apple 的工具。老实说,我觉得他们很尴尬,有点神秘,但仍然很有趣。

但是……那我也喜欢这样:

public string SomeString { get; set; }

用 Objective-C 做同样的事情(无论如何在 iPhone 上)需要你声明一个局部变量来支持属性,编写属性声明,然后使用“synthesize”指令为你生成属性(取决于关于您指定的属性属性,您可能有一个包装了 getter 和 setter 的属性,它们为您处理引用计数 - 总体而言,这一个节省时间的方法,但 C# 方式显然是这里的赢家)。

这只是 MonoTouch 如何让您的生活更轻松的一个示例,特别是如果您习惯于 .Net/Java/Python/其他不需要您弄脏内存管理的语言(除非您愿意) .

就 iPhone 而言,除了将 .Net 的一部分引入 iPhone 世界之外,MonoTouch 命名空间映射到 CocoaTouch,所以如果你对 MonoTouch UIViewController 感到困惑,你可以直接跳到 Apple 的文档在 UIViewController 上。MonoTouch .Net-izes CocoaTouch,但它足够接近,您不太可能撞到墙(如果您使用 Xcode/Objective-C,也不会撞到墙)。它很光滑。

钛不一样。由于他们正在尝试(尝试)创建一个抽象层,让您可以为多个平台编写相同的应用程序,因此您将处理通常的缺点:完全不同的 API,失去灵活性(MonoTouch 也可以这样说) ,但程度不同),并且基本上必须学习一个全新的平台(这是你试图通过绕过 Xcode/Objective-C/CocoaTouch 来避免的,对吧?)。

我也讨厌 JavaScript,所以我会偏向于 Titanium。但即使不是这样——即使我可以使用我喜欢的语言——API 也不会满足我的想象。或者我的任何东西。

无论您选择哪种开发工具,您最终都必须学习一些有关 CocoaTouch 的知识。无论是 Xcode/Objective-C、MonoTouch 还是 Titanium,都会遇到问题或完全无法解决问题,您最终将不得不参考 CocoaTouch 文档。

如果我要发表关于 iPhone 开发的演讲(我已经做过,而且我将再次做),如果我要讨论 Apple 开发工具的替代品(我会这样做),我仍然会强烈鼓励开发人员至少工作通过使用本机工具的一些基本 iPhone 应用程序。这将使您成为该平台的更好的开发人员 - 期间。您可以使用这个开始阶段来确定您是否想要使用除 Apple 提供的免费位以外的任何东西。你可能不会。我一直在使用 MonoTouch,因为它让我满意——而不是因为它是必要的。

因此,总结几个基本标准:

  • 偏好(语言/框架)

  • 设备(您是否关心非 iPhone 平台或认为有一天您可能会关心?)

  • 舒适(如果你喜欢并且比 Objective-C 更了解 C#,那么没有理由不使用 MonoTouch)

不要听那些反对者的话,除非他们真的使用了他们所谈论的技术。例如,我读过关于 Titanium 的文章,但我没有使用它的经验——我只知道由于我的喜好,我不想与它有任何关系。这并没有让它变得“坏”——只是我生活中不想要的东西。

Objective-C 人群的热情令人印象深刻。虽然其中有很多思想开放的开发人员,但也有很多人认为 Objective-C 和 Cocoa等等是 devkind 将永远需要的最后的开发工具。

别理他们。

如果您担心支持,请考虑以下几点:

  • 苹果很可能会保持最新状态,因为他们是制造这种垃圾的人。

  • MonoTouch 很可能会保持最新状态——Mono 窥视者在跟上 Microsoft 方面做得非常出色,我认为他们没有理由不与 Apple 做同样的事情。我对他们的所作所为感到震惊。尽管 MonoTouch 已经发布,就像五分钟前一样,他们已经为 iPhone 3.1 发布了更新。他们对此很认真,我认为他们很神奇。他们是开发世界的基布勒精灵。他们坐在他们的秘密层中,制作每个人(好吧 - 不是每个人)都喜欢的东西,但其他人甚至都不会尝试这样做。

  • Titanium 要么会成为一个尴尬的统一 API,用于为多个平台编写应用程序,这完全是它自己的事情,要么会随着不同平台的功能分化而变得越来越分裂。是的,那是一群典型的扶手椅书呆子式的未来凝视……我应该在这个项目符号的开头加上“我认为……”如果有办法回去改变它。

我现在就闭嘴。

随心所欲。MonoTouch 是 Apple 产品的“安全”替代品。恐怕 Titanium 会走上与许多其他技术一样的老路——这个超高级平台——抽象层——东西并不真正可行。但是,如果您正在做一些简单的事情,那么试一试并没有什么坏处,尤其是考虑到它在测试期间是免费的。

好的。

现在真的闭嘴了......我希望这会有所帮助。

于 2009-10-04T03:02:15.570 回答
4

这些是构建 iPhone 应用程序的有趣且有趣的方式。但是,对于真正快速的原生 iPhone 开发,最好的选择是免费的 iPhone SDK 和 Xcode。

老实说,最难学习的是框架本身的功能,而不是语言语法。但这是您必须以任何一种方式解决的问题,因为这些 IDE/语言仍然需要您掌握 Cocoa(和 Cocoa Touch)的一些约定。

我并不是说这是一个 Cocoa / Objective-C 势利小人,但如果你了解 C(作为 C# 开发人员你会这样做),那么进入真的没有任何障碍。

此外,您将可以访问大量教程和示例代码,这些教程和示例代码对于这些初出茅庐的翻译器/IDE/语言来说是不可用的。

学习另一种编程语言很少是坏事,作为一个有经验的程序员,你的时间投入不会像你想象的那么大。

于 2009-09-28T18:02:13.677 回答
3

我创建了一个开源项目http://propertycross.com,它通过展示使用 Sencha、Titanium、Xamarin 等实现的相同应用程序来帮助开发人员选择跨平台移动框架。该项目让您可以轻松地在最终用户体验、代码、IDE、开发人员体验等方面比较各种框架......

于 2012-12-28T15:15:28.180 回答
2

我知道这是一个老话题,但为了保持最新,看起来 MonoTouch 和其他跨平台框架将在 SDK 4.0 中被禁止。编写 iPhone 应用程序的唯一“安全”赌注是使用 XCode 和 Objective-C,至少目前是这样。

于 2010-04-13T04:42:01.790 回答
2

我有点喜欢通过技术人员已经知道的技术来提供快速掌握 iPhone 开发的方法的想法。作为一名 Java 开发人员,我个人使用 iSPectrum ( http://www.flexycore.com )。它还带有一个 IDE、调试器和其他东西,这使得开发非常方便,因为它受益于 Eclipse Java 插件的所有功能。基于 Java,这还允许轻松重用来自其他 Java 应用程序的现有代码,如果 Java 存在于除 iPhone 之外的几乎所有平台(桌面和移动设备)上,这将非常方便。此外,它对开源项目是免费的。

我宁愿考虑这种解决方案,因为我不喜欢回到使用 emacs 进行开发的想法:)。

于 2010-03-24T08:28:37.083 回答
1

如果你是 C# 程序员,为什么不应该花一些时间来学习 Objective C。老实说,它不会占用你太多时间。但是,在使用新语言的新平台上工作感觉很好。学习新事物总是让我着迷。

于 2010-07-20T15:43:13.723 回答
0

有很多方法可以进入设备。Apple 在 SDK 许可证中声明,唯一获准进入设备的方式是通过 C、C++、ObjectiveC 和 Javascript。

目前看来,基于 MonoTouch 和 Appcelerator Titanium 构建的应用程序正在被 App Store 接受。由于许可证变更,人们对这个主题有很多恐惧、不确定性和怀疑。Apple 已经吓到大家不做 ObjectiveC 了。

我建议您做任何对您作为开发人员最有意义的事情。如果您了解 C# 和 .NET,则应该使用 MonoTouch。如果您了解 ObjectiveC 或 Mac 平台,ObjectiveC 可能是您要走的路。如果您知道 X 并且它在 iPhone 上,那么我建议您首先查看 X。

于 2010-07-01T12:30:55.030 回答