【问题标题】:Need advices considering coding with MONO-TOUCH需要考虑使用 MONO-TOUCH 进行编码的建议
【发布时间】:2012-03-29 03:59:08
【问题描述】:

我想知道,为了在iOS上使用MONO TOUCH开发app,是否学习比较好:

  • Objective-C / Cocoa Touch
  • C# .NET

我要求这样做是因为我的老板想以 C#.NET 格式而不是 Objective-C /Cocoa Touch 派我来,我不确定这是不是最好的决定

感谢您的帮助!

【问题讨论】:

  • 你的老板为什么要这个?我想不出任何正当的理由......
  • 因为他们也想使用该代码在 Android 上开发应用程序......对他们来说这似乎是更好的方式!
  • 我从未使用过单点触控,但我尝试了另一种多平台解决方案。弄清楚在哪个平台上支持哪些部件只是一个巨大的痛苦。 Android 和 iOS 差别如此之大,以至于我觉得维护两个代码库实际上同样困难......
  • 因此,最后,不建议您使用此平台在 Android 和 iOs 上开发相同的应用程序
  • 我无法评论从未使用过的 monotouch。我只建议对多平台解决方案保持谨慎。

标签: c# .net objective-c ios xamarin.ios


【解决方案1】:

我认为您需要确定您的更高级别目标是什么才能做出这样的决定。就个人而言,MonoTouch 是我唯一的途径,因为我是一名在 .NET 商店工作的 .NET 开发人员,所以我的公司会接受这一点,但不想冒险在 Obj-C 中这样做。

我对 Obj-C 知之甚少,但我可以说 BCL(基类库)中提供的所有东西都让 MonoTouch 中的编码变得更加容易。有了对 LINQ、通用列表、文件 IO 等的支持,使用 .net 似乎很专业(在我看来)。

最后,您将覆盖相同的方法并调用相同的方法来执行您在 iOS 中需要执行的操作。但是,MonoTouch 封装了一些功能,使其更容易做事。

考虑到我的观点非常主观,因为我是一名 .NET 开发人员。

【讨论】:

  • 感谢您的回答...所以现在您知道我不懂 C#,但我知道一点客观 C(我有开发 2 个 littles 应用程序).​​..您认为会是学习 C# 或提高我的 Objective C 知识并在学习 C# 之后的更好方法?对你来说最快的方法是什么?谢谢
  • 如果你知道一些 Obj-C 并且你想要最快的方法,那就去 Obj-C,简单明了。由于它们都是 C 的后代,它们确实有相似之处,这将使从一个到另一个更容易。我从来没有在 Obj-C 中搞过内存管理或 ARC,但我听说这可能会很痛苦。 MonoTouch 为您抽象出这一切。
【解决方案2】:

如果您已经确定您将使用 MonoTouch,那么您需要了解 C#。你无论如何都需要一些objective-c / iOS-development的知识,因为你有时需要知道函数是如何被调用的等等。

更新:要在 cmets 中回答您的问题,决定起来并不容易。我真的很喜欢 MonoTouch,它绝对是开发 iOS 应用程序的好方法。也许您可以从我的previous question 获得一些您想知道的信息。我不会使用objective-c 来开发iOS 应用程序,因为你也可以使用objective-c 在MonoTouch 中的所有功能。

警告(以下是主观意见):在我看来,C# 是一种比 Objective-C 更好的语言,而且它更现代。那么为什么要坚持这种古老的技术呢?

UPDATE2:刚刚看到您关于 Android 的更新。对于多平台开发,atm 只有 2-3 种选择:

  • MonoTouch / MonoDroid
  • Web 开发(HTML5 等)
  • Adobe Flex

每三个都有不同的优点和缺点。但是,如果它应该感觉和看起来是原生的,那么您最终会坚持使用 Mono*,因为它是唯一(上述提到的)真正使用原生库的。

【讨论】:

  • 您认为将系统用作 Mono Touch 是一个很好的解决方案吗?
  • 出于好奇,您能保证单点触控在两个平台上都能同样出色地工作吗?我很担心跨平台解决方案,因为我不幸使用了 appcelerator 钛......
  • 是的!这是一个非常好的问题!很高兴知道具有相同代码的平台之间的可移植性是否真的有效!谢谢
  • 它至少在 iOS 上运行起来就像一个魅力。我没有在 Android 上尝试过,因为我没有 MonoDroid 的许可证。只要你严格遵循 MVC,你应该只需要重写少量代码......
  • 那么不幸的是我不能相信revommendation。无需在其间添加另一层,Android 原生就足够令人头疼了。例如,iOS 滚动视图可以向两个方向滚动,而 android 只能向一个方向滚动。它如何处理这种差异?这类问题让我很困扰……最终它们变成了根本性的不同,而不是微小的变化。
【解决方案3】:

我建议两者都学习...原因如下:

  • 要使用 MonoTouch,您需要了解 C# 和一些基类库。这很明显。
  • 要为 iOS 开发,您需要了解 Apple 的 UI 思维方式。这与 Windows 方式完全不同。您无需对 ObjectiveC 语言本身有太多了解即可使用 MonoTouch(但能够阅读它绝对是一个优势,因为您显然可以在 ObjectiveC 中找到比在 C# 中更多的示例)。

所以如果你必须选择,这真的取决于你已经知道什么。如果你懂一些 C#,我会去 CocoaTouch 课程。如果您了解一点 iOS/CocoaTouch UI 编程,那么我会选择 C# 课程。如果您都不知道并且必须选择一个...我会选择 C# 课程,因为您的应用程序的 Android 版本也需要它。

【讨论】:

  • OK ...但最后,如果您想做出更好的选择...您会用 MONO 开发 iOS 和 Android 应用程序吗(由两个开发人员分别开发,他们分别是一些技能之一) iOS 和 Java 中的另一个),或者您会选择使用 XCode/Obj-C for iOS 和 Eclipse/Java for Android ?您希望多平台系统在 2 台设备上开发相同的应用程序,或者您希望以“本机”方式开发相同的应用程序?
  • @Romain Rolf 和我为 Xamarin 工作。话虽如此,请查看blog.xamarin.com/2012/02/24/mwc_2012,了解如何在构建原生移动应用程序(也可以轻松扩展到 Windows、OSX 和 Linux 上的桌面应用程序)时最大限度地共享代码。
  • 谢谢,但它没有回答我的问题,而是向我们展示了另一个多平台系统...
  • @Romain:我个人会在 Android 上使用 MonoTouch/Mono,但我可能有点偏颇,因为我为 Xamarin 工作。在任何情况下,我都会明确地寻求一种多平台解决方案来缩短开发时间(和成本)。
【解决方案4】:

MonoTouch 是一个 C#(交叉)编译器。

所以你需要学习 C# 而不是(全部).NET

【讨论】:

  • 学习如何编码和使用 cocoa touch 框架并在 C# 之后学习不是更容易吗?
  • 视情况而定。 MonoTouch 旨在供 C# 使用。但是什么是固定的/最重要的:iOS 还是 MonoTouch?
  • 最终是用相同的代码开发p iOS应用程序和Android应用程序!但就我而言,我已经对 Objective C 有所了解。而且我很确定这将是一个更好的方法来遵循“完整”的形式来了解如何正确使用 Cocoa Touch FrameWork,然后学习如何编写代码C#。你怎么看?
【解决方案5】:

MonoTouch 采用 C# 语言,并具有 Android 版本的额外好处,因此将您的应用程序移植到 android 应该相当简单。

【讨论】:

  • 允许在 iOS 和 Android 上“移植”同一应用程序的事实似乎并不那么容易......这对我来说很清楚(即使我并不真正了解MONO TOUCH),您不要使用相同的代码在 iOS 和 Android 上进行编译!你能确认一下吗?
  • 我当然不是要暗示这将是一个 1 对 1 端口;代码不一定相同,但您会受益于能够使用 Visual Studio 并在两种设备的 Windows 上进行开发。您可以在两者中使用常规的 .Net DLL。会有一些代码可以跨两个平台重用。
  • Romain:您将能够在 MonoTouch 和 Mono for Android 中使用完全相同的“业务逻辑”代码,但您必须重写 UI 部分,因为您需要使用本机 UI 绑定每个平台。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
相关资源
最近更新 更多