3

我是一名 python 程序员,希望制作我的第一个移动应用程序。我想为 iOS 和 Android 制作一个外观和感觉都是原生的应用程序。我想我会从一个简单的 iPhone 应用程序开始,看看一切是如何工作的。Mono 似乎是显而易见的解决方案。然而,我惊讶地发现,我发现的几乎所有示例 Monotouch 代码,以及 Stackoverflow 上的答案,都严重依赖于 IOS 框架,本质上使得代码根本不是跨平台的。例如,我正在研究使用计时器。我阅读的所有示例都使用 NSTimer。当然这可以在 C# 本身中完成,以便该部分是跨平台的?但是,为什么所有这些人都使用 NSTimer?

所以,我的问题是,IOS/Android 的 Mono 开发如何跨平台?对于小型应用程序是否仍然值得考虑,或者仅适用于具有大量业务逻辑的非常大的应用程序?

4

2 回答 2

9

你的问题太笼统了。我将针对两种情况回答:

具体示例
如果您正在寻找如何创建计时器、创建数组、遍历列表,那么为什么不只是寻找常规的 .NET 示例并将其编译为可以在两个项目中的单个类库。

作为一个整体共享代码
如果您只是指在两个平台之间共享代码,您应该查看已经为您创建的模板和示例的框架。两个这样的模式是http://www.monocross.net/ (MVC) 和mvvmcross (MVVM)。这可以帮助您从一开始就构建项目以支持跨平台开发(iOS、Droid、Wp7、桌面等)。

.NET 基类库中有计时器、数组和字符串。如您所见,MonoTouch 包装的 Cocoa 库中有一些。例如,您可以在 .NET 中定期运行 mill string,但在 monotouch 中,您还可以选择 NSString。我想回答你的问题,人们有时可能会使用 iOS 特定类型的原因,要么是因为他们没有尝试使该代码跨平台而且这是一个偏好问题,要么他们必须做一些特别需要的事情这种类型的使用并非对每个人都适用。

Mono 的目的不仅仅是帮助跨平台开发。我来自 C#/.NET 背景,所以即使我正在构建一个只有一个屏幕和两个按钮的应用程序,我也会使用 MonoTouch,因为我宁愿使用带有 .NET BCL 的 C# 而不是 Obj-C。但这是我个人的选择,对我来说已经足够了。

编辑
我添加了链接。

于 2012-06-22T15:50:30.430 回答
0

我认为关键在于,为了使用 Mono 而不是使用特定于平台的类型等,例如 NSSTring,您需要一个特定于平台的包装器(抽象层),它可以让您编写仅使用 Mono 类型的代码。

即,您询问是否使用 Mono,但您实际需要的是 MonoTouch 和 MonoDroid(@valdetero 引用的框架取决于支持它们的那些包装器)。

于 2012-09-10T15:16:05.493 回答