iphone - 在 iPhone 上快速开发应用程序的 Monotouch 还是 Titanium?

标签 iphone xamarin.ios titanium appcelerator

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

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

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

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

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

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

我也不确定所有 Iphone api 和功能的完整覆盖范围。

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

您会选择哪一个?您对 Monotouch 和 Titanium 有何体验?

最佳答案

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

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

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

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

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

但是......然后我也喜欢这个:

public string SomeString { get; set; }

用 Objective-C(无论如何在 iPhone 上)做同样的事情需要你声明一个局部变量来支持属性,编写属性声明,然后使用“合成”指令为你生成属性(取决于关于您指定的属性属性,您可能有一个包装 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 开发工具的替代方案(我会),我仍然强烈鼓励开发人员至少工作通过使用 native 工具的一些基本 iPhone 应用程序。这将使您成为该平台的更好的开发人员 - 时期。你可以使用这个开始阶段来确定你是否想要使用 Apple 提供的免费位以外的任何东西。你可能不会。我一直在使用 MonoTouch 是因为它让我满意——而不是因为它是必要的。

因此,总结一些基本标准:
  • 偏好(语言/框架)
  • 设备(您是否关心非 iPhone 平台或认为有朝一日可能?)
  • 舒适度(如果您喜欢并了解 C# 比 Objective-C 好得多,没有理由不使用 MonoTouch)

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

    Objective-C 的人群可能非常热情。虽然其中有很多思想开放的开发人员,但还是有很多人认为 Objective-C 和 Cocoa 等等是 devkind 将永远需要的最后一个开发工具。

    别理他们。

    如果您担心支持问题,请考虑以下几点:
  • 苹果很可能会保持最新状态,因为他们是制造这种垃圾的人。
  • MonoTouch 很可能会保持最新状态——Mono peeps 在跟上 Microsoft 的步伐方面做得非常出色,我认为他们没有理由不对 Apple 做同样的事情。我对他们的所作所为感到震惊。尽管 MonoTouch 已经发布,比如五分钟前,他们已经发布了 iPhone 3.1 的更新。他们对此很认真,我认为他们很神奇。他们是开发世界的 Keebler Elves。他们坐在他们的 secret 层中,制作每个人(好吧 - 不是每个人)都喜欢的东西,但其他人甚至不会尝试这样做。
  • Titanium 要么会成为一个笨拙的统一 API,用于为多个平台编写完全属于它自己的应用程序,要么随着不同平台的功能出现分歧,它会变得越来越 split 。是的,那是一堆典型的扶手椅 Nerd 式的 future 凝视......我应该在这个项目前加上“我认为......”如果只有一种方法可以返回并改变它。

  • 我现在就闭嘴。

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

    好吧。

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

    关于iphone - 在 iPhone 上快速开发应用程序的 Monotouch 还是 Titanium?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1488402/

    相关文章:

    iphone - 如何更改uitableview删除按钮文字

    iphone - 动态命名标签 -ios

    android - 目标平台部分的 IOS 选项是灰色的,不可点击

    azure - 如何在 Xamarin Forms iOS 应用程序中接收 ASPN token

    javascript - Jasmine 中的模拟字符串.格式

    iphone - 如何: Navigation Controller in Tab Bar Controller

    iphone - NSString的前两行,给出了宽度和字体

    android - 如何增加 Titanium Android 应用程序的堆栈大小

    xamarin.ios - 配置文件问题

    ios - Titanium - 像Groupon一样的滑动菜单