【问题标题】:What is the easiest way for a c# programmer to develop for i-Phone?c#程序员为iPhone开发最简单的方法是什么?
【发布时间】:2010-12-03 03:01:28
【问题描述】:

我应该使用 Mono + c# 吗?或者我最好学习和使用目标c? 谢谢

【问题讨论】:

    标签: c# iphone


    【解决方案1】:

    看看MonoTouch.

    【讨论】:

    • 我想知道 Apple 对 MonoTouch 有什么看法。知道未来可能出现的问题吗?
    • MonoTouch 没问题,因为它不像 iPhone 上的其他语言那样使用解释器。它被编译成原生的 Objective-C 代码,所以最后两者是无法区分的。但是,您将受制于 Novell 对 MonoTouch 的支持,而不是 Apple 的直接支持。
    【解决方案2】:

    这将是一个有点意见的问题,但我认为你最好还是坚持使用 C#。切换到 Objective-C 会增加您必须学习的新信息量,然后才能在您的环境中高效工作。

    即使与 C# 保持一致,您仍然必须...

    • 了解 iPhone API
    • 了解使用 iPhone 本身开发的怪癖

    虽然使用 C# 有一些缺点

    • 大多数 iPhone 示例将使用 Objective-C。因为你不懂语言,所以很难将它们应用到你的问题集中
    • 在 Mono 中使用静态编译肯定会有一些小问题,您需要习惯这些问题。

    但我的直觉是,与学习一门新语言的成本相比,这些成本微不足道。

    编辑

    我想澄清一下我对学习一门新语言的想法。我认为学习语言很有趣,并且是程序员生活中必不可少的一部分。您应该至少每年尝试一次新语言。今年我在玩 F#。

    我反对这个问题的唯一原因是 OP 说“最简单的方法......”。学习一门新语言确实需要额外的时间并且需要更多的努力,所以我认为它更容易坚持使用 C#。

    【讨论】:

    • 但另一方面......学习新事物总是很有趣!但是由于问题要求“简单”,所以您是对的。 MonoTouch 可能是要走的路,尽管 400 美元的许可证价格更高,而且社区对问题的支持可能会更少。
    • 确实需要一些时间来适应。我使用过 C、C++、Java 和 C#,但我在思考一些概念时遇到了麻烦(而且仍然不会适应它)。虽然我对 XCode 和一些设计师的怪癖比语言本身有更多的问题。
    • 我在职业生涯中学习了多种语言。我不害怕新语法。 Objective-c 背后是否有新的范式?或者它是一种常规的面向对象语言?
    • @Guard,@Nestor。请参阅我关于为什么我不建议学习一门新语言的说明。我自己喜欢学习新语言,并且认为作为程序员这样做非常重要。
    • 我强烈反对。除了编写“Hello World”之外,为了使用MonoTouch,你还必须学习; Cocoa Touch,Objective-C 的内部工作原理,以及 MonoTouch 的内部工作原理。因此,对于超出最基本用例的任何应用程序,您实际上必须allot 学习更多才能使用 MonoTouch,而不是仅仅咬紧牙关花几天时间学习 Objective-C。
    【解决方案3】:

    如果您希望能够使用 iPhone 的所有 API 并能够访问本地代码调试,那么您可能会想要学习 Objective C。

    不过,Mono-Touch 以低廉的价格让您可以使用 C# 开发 iPhone 应用程序,但目前缺乏调试支持。泛型和其他高端功能的某些用途也有限制。 Here's a link to the limitations.

    此外,要使用 Mono-Touch,您仍然需要设置 Xcode 和 Mac 环境来为 iPhone 开发。不用说,如果您真的想将任何东西部署到实际设备上,您需要加入 Apple iPhone 开发者计划。

    【讨论】:

    • 明白。是否有任何机会在 Objective C for Windows 中开发 IDE? (类似于 Visual Studio)
    • Apple 提供免费的 XCode - 但它只能在 Mac 上运行。
    • 我相信这也是故意的。如果您想为 iPhone 开发,Apple 希望您购买 Mac。如果您查看 MonoTouch 的下载页面,即使您想使用 C#,也需要您有 Mac。
    • 哦,天哪……我不知道我需要一台 Mac,即使是 MonoTouch。那我就麻烦了。
    • 在探索这个相同的问题集供我使用时,是否有任何 Windows 操作系统的虚拟机或类似的设备可以模拟可用于开发的 MAC?
    【解决方案4】:

    这可能会冒犯一些人,但老实说,如果你要进行任何认真的开发,你应该学习 Objective-C。在 iPhone 开发中不了解 Objective-C 只会成为一个障碍。您将无法理解许多示例;您必须处理 Mono 的怪癖,而如果您具备 Objective-C 的工作知识,您可以从平台文档中获得更多信息。

    就我个人而言,我不理解这样的立场,即增加您需要的信息量以支持在平台的本地语言上使用 Mono。这对我来说似乎有些适得其反。我认为如果这是一个非常昂贵的命题(学习一门新语言),那么花一些时间在基本的编程概念上可能是值得的,这样学习新语言是一个相当便宜的命题。

    【讨论】:

    • 你的推理对我来说很有意义。谢谢
    • 而且雪上加霜; MonoTouch 甚至没有适当的调试支持。因此,您将不得不仅通过日志打印来指导您学习所有这些新事物。从什么时候开始,初学者在编写新代码上花费的时间比调试更多?
    【解决方案5】:

    Monotouch 现在对您来说更容易了。但以后会更难。

    例如,当你需要测试新种子但由于某种原因破坏了 MonoTouch 时会发生什么?

    通过坚持使用 Mono,任何时候您在查找框架的资源时,您都必须在心理上将其转化为您将如何在 Mono 中使用它们。您的应用程序二进制文件会更大,在使用 Objective-C 几个月后,您的开发时间不会快很多,而其他应用程序开发人员将比您拥有更多优势,因为他们使用的是本机平台。

    另一个考虑因素是您希望使用 C#,因为您比 Objective-C 更熟悉该语言。但 iPhone 的绝大多数学习曲线不是 Objective-C,而是框架——你也必须用 C# 调用。

    对于任何平台,您都应该使用直接表达该平台设计理念的平台——在 iPhone 上,即 Objective-C。反过来想一想,如果一个习惯使用 GTK 编程的 Linux 开发人员想要编写 Windows 应用程序,您会认真建议他们不要使用 C#,而是坚持使用 GTK,因为这样做对他们来说“更容易”吗?

    【讨论】:

      【解决方案6】:

      我认为 MonoTouch 是可行的方法,但请记住,它仍处于起步阶段。我能够安装 Mono 开发工具并让 MonoDevelop IDE 工作,但当前状态下的 IDE 速度非常慢,几乎无法使用;至少在 Mac OSX 的 Snow Leopard 上运行。我做了一些谷歌搜索,看起来这是一个已知问题,但已在 MonoDevelop 的前沿存储库中修复。我认为 Novell 正在做一些事情,但我也觉得您将在整个框架仍处于早期阶段时与它搏斗。

      所以底线是,如果你想走 C#/MonoTouch 路线,请准备好因为框架的不稳定或不完整而进行大量的腿脚工作和鬼追。我认为这适用于任何新框架。

      【讨论】:

        【解决方案7】:

        我发现这很有趣Podcast

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-01-18
          • 2013-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-22
          相关资源
          最近更新 更多