【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2642|回复: 2

MonoTouch:用.NET开发iOS应用

[复制链接]
发表于 2013-8-14 15:09:43 | 显示全部楼层 |阅读模式
直到最近,要为苹果的iPhone开发应用程序的唯一选择就是一头扎进苹果的开发系统中。这意味着,你必须“愿意”在XCode IDE中编写Objective-C代码。对于很多开发人员,学习Objective-C被看作是一个巨大的障碍。特别对于哪些从来不用担心内存管理、指 针和C语言要负责处理的东西的开发人员来说,更是如此。


随着MonoTouch框架(Novell的Mono Project的一部分)的出现,这一切都将改变。Mono Project是微软.NET平台的开源实现。其允许你在几乎任何平台上运行.NET应用程序,包括Apple、FreeBSD、Linux、Unix等 等。MonoTouch是Mono Project的新组成部分,让你能够用C#和.NET平台编写可以运行在iPhone上的应用程序。

本篇文章的目的,就是提供MonoTouch平台的一个完整介绍,让大家知道到那里获取必要的工具,MonoTouch有什么样的限制,以及如何构建一个简单的应用程序。

背景和限制

对于打算为iPhone开发应用的.NET开发人员而言,MonoTouch的出现无疑是一件好事。然而,在决定创建应用程序之前,有一些限制和背景知识需要先了解清楚。

它如何工作?

在创建MonoTouch应用程序的时候,大部分非UI方面的.NET 3.5功能依旧可用,或者一些还处于计划之中(如.NET 4.0的功能)也囊括其中。这让你可以使用很多业已熟悉的.NET Framework技术来编写应用程序,包括Windows Communication Framework (WCF)、Workflow Foundation (WF)等等。也包括几乎所有的基类库(Base Class Library,BCL),涵盖诸如垃圾收集(Garbage Collection)、线程、数学函数、System.Net、加密等。对于可用的标准.NET程序集列表,见http://monotouch.net/Documentation/Assemblies。MonoTouch是一种基础.NET函数库的特别定制版本,这也类似Silverlight和Moonlight的实现方式。

这意味着,你能够使用MonoTouch的核心程序集来编译标准的.NET 3.5代码成相应的函数库,并在你的应用程序中使用它们。因此,如果你有一个用于其它应用程序的特别函数库,其包含着一些用于工程问题的高级数学函数,那 么只需简单地把这些代码库加入到你的MonoTouch解决方案中,并引用它。在你构建解决方案的时候,编译器就利用MonoTouch核心函数库对其进行编译,接着就能在iPhone应用程序中使用它了。

MonoTouch也包括一些原生iPhone API的包装函数库,如访问位置(Location,GPS)、加速计、地址簿等的函数。MonoTouch也提供相应的功能,让你能够调用那些尚未进行包装的原生Objective-C函数库,所以你可以直接和现存的Objective-C代码进行互操作。

我如何创建用户界面(UI),我能使用Silverlight吗?

MonoTouch应用程序的UI需要使用苹果的Interface Builder(界面创建器,IB)应用程序来创建,IB连同iPhone SDK一起提供。Interface Builder使用Cocoa Touch(苹果用于iPhone的UI框架)控件对象,这些控件对象在iPhone上原生提供的。这意味着,你能在应用程序中使用所有的标准 iPhone控件,如选择器(Pickers)、滑动条(Sliders)、按钮等等。

你也能通过代码来创建界面,即实例化Cocoa Touch对象后,把它们添加到应用程序的视图(Views)中(关于视图,后面会详细讲述)。

然而,你不能利用传统的.NET技术,如Silverlight、WPF、WinForms等来创建MonoTouch界面。

Cocoa Touch使用一种融合了MVC(Model View Controller)模式思想的结构,我们将在后面一篇文章中介绍。

我如何分发我的应用?

MonoTouch应用程序的分发完全和传统iPhone应用程序的分发一样,既可以通过苹果App Store,也可以通过企业部署。

App Store是一个在线资源库,让用户可以付费购买(如果不是免费的话)和下载应用程序。可以从iTunes中访问,或直接通过iPhone本身来访问。为 了得到通过App Store分发应用的许可,你必须向苹果注册,并支付每年99美元的年费。

企业部署方式就是为公司开发内部应用程序,并分发给员工等人员使用,无需把应用在App Store中列出。

什么是许可模型?

不像Mono那样,MonoTouch不是开源的,且是一个收费产品。这意味着,如果你打算开发一些实际的应用,就必须购买软件许可。

专业版($399)——单个的个人开发人员许可,让你可以开发应用程序,并通过苹果App Store来分发它们。

企业版($999)——单个的企业开发人员许可,让你可以开发应用程序,并通过苹果App Store来分发它们,或者进行企业部署。

企业版,5人($3999)——和企业版一样,只是提供了5个坐席的授权。

以上所有选项都包括了一年的免费升级权益。

还有一个评估版本,你只能把应用部署到模拟器中。出于介绍的目的,我们只需要评估版本就行。

MonoTouch有哪些限制?

没有即时(JIT)编译

根据苹果的iPhone政策,任何应用程序都不能包含需要JIT编译的代码。但是稍等,.NET确实能正确工作,是不?对,不过MonoTouch是通过把应用程序编译为原生的iPhone程序集来跳过这个限制的。但是,这也带来了几个限制。

  • 泛型——泛型是由JIT编译器在运行时进行实例化的,然而,Mono具备一种提前(Ahead of Time ,AOT)编译的模式,可以为类似List这样的泛型集合生成方法和属性。而泛型的其他用法,例如泛型虚方法、泛型类型上的 P/Invokes和Dictionary上的值类型,就不被支持(虽然存在Dictionary的代替方法)。
  • 动态代码生成——因为动态代码生成依赖于JIT编译器,所以对任何动态语言编译的过程也不能支持。包括System.Reflection.Emit、 Remoting和动态语言运行时(DLR)。

C#是唯一的语言

另外,目前用于编写MonoTouch应用程序的唯一可用语言是C#。Visual Basic.NET有望在MonoTouch未来的发布中支持,不过此时此刻我们别无选择。

更多信息

相关限制的完整列表和更多的信息,包括一些代替方法,可用参见http://monotouch.net/Documentation/Limitations

 楼主| 发表于 2013-8-14 15:13:57 | 显示全部楼层

入门

要进入为iPhone创建MonoTouch应用程序的大门,我们需要下面几样东西:

  • 一个使用Intel CPU的Mac电脑,其要安装MacOSX 10.5或10.6 (Leopard或Snow Leopard)
  • 苹果的iPhone SDK 3.0或更高版本
  • Mono的当前版本
  • MonoTouch SDK
  • 一个IDE工具,如MonoDevelop或XCode,或一个文本编辑器程序

安装着Leopard或Snow Leopard的Mac

这是最重要也是最容易忽视的需求。尽管,理论上你能在任何平台上开发大部分应用程序,然而iPhone Simulator和Interface Builder只能在Leopard和Snow Leopard上运行。另外,编译器本身用到了一些特定于Intel Mac机器的底层功能,所以购买这样一台电脑是绝对必须的。

苹果的iOS SDK

iOS SDK可通过http://developer.apple.com/iphone/来免费下载,不过必须在苹果网站上注册,才能访问这个地址。

在安装了iPhone SDK后,要确保你能正常启动iPhone Simulator。要启动它,只需打开Spotlight,键入iPhone Simulator。

Mono

一旦你测试iPhone Simulator正常,那么就要安装Mono for OSX的最新版。Mono可以从http://mono-project.com/Downloads下载。记住要点击“Intel”版本的链接,不要点CSDK版本。同样,安装MonoTouch SDK之前也需要安装Mono的。Mono的安装包是磁盘镜像的形式,挂接镜像,双击安装包,根据安装向导完成安装过程。

MonoTouch SDK

接下来,下载和安装最新的MonoTouch SDK。你既可以在MonoTouch商店(http://monotouch.net/Store)购买,购买后会收到一个下载链接,也可以从http://monotouch.net/DownloadTrial下载评估版。如果购买了MonoTouch,你就能把应用程序部署到一台正确配置了的iPhone上,不过也可像我这样,仅仅在模拟器中运行。所以,目前 而言试用/评估版就足够了。

文本编辑器或集成开发环境(IDE)

如果你打算创建MonoTouch应用程序,所需的所有东西就是前面提及的,和一个文本编辑器。你能创建所有代码文件,并用命令行(终端窗口)来手动编 译。这种方式虽然可行,但是实际操作起来可能会非常痛苦,所以我们还是需要使用一个IDE来开发我们的应用程序。

你可以编辑/hack一下XCode(随iPhone SDK一起安装)来利用MonoTouch的函数库和编译器,也可以使用MonoTouch版的MonoDevelop,其已经为MonoTouch应用 程序做好所有配置了。我们理所当然要用MonoDevelop,所以访问这里http://monodevelop.com/Download/Mac_MonoTouch来 下载它。要安装MonoDevelop,只用把下载文件拖到应用程序目录中就行。

如果你已经正确安装Mono,那么MonoDevelop应该可以正常启动。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 06:41

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表