前 言
欢迎阅读本书。如果你是一个.NET开发人员且有兴趣开发基于iOS设备的本地应用程序,那么MonoTouch是个不错的选择。它在优雅的C#和.NET中融合了CocoaTouch框架和Objective-C语言概念,让其成为一个精心设计且乐在其中的技术。可以使用MonoTouch,在App Store和企业中部署应用程序(假设具有适用的许可证)。甚至只需要一个免费版本的模拟器,就可以学习和尝试它,而不需要任何额外的费用。此外,如果你是一个学生,还可以使用带有折扣的学生版本。
MonoTouch允许使用与Objective-C一样的API创建应用程序,同时提供了许多基于Mono、C#和.NET的语言和API特性。此外,除了很好地抽象化了Objective-C的内存管理外,还可以使用垃圾回收、可重用的非UI代码、SQLite的ADO.NET封装、Web服务、LINQ和泛型等技术。
MonoTouch很强大,因为它构建于苹果公司的技术之上,同时增加了大量额外的功能来辅助开发应用程序。围绕MonoTouch的团队和社区也是值得关注的。可以通过论坛、邮件列表以及非常活跃的IRC通道等渠道从MonoTouch团队和社区成员那里获得支持,讨论你的想法,或者只是潜水。社区是讨论MonoTouch相关问题的最好平台。而在IRC通道,则会发现从MonoTouch新手到Mono和MonoTouch创建者,他们每一个人都在为使开发人员的体验更好而努力工作着。
本书是如何组织的
本书一共有12章来帮助你学习一切你需要知道的有关使用MonoTouch进行iOS开发的知识。
第1章演示了如何搭建开发环境,以及在MonoDevelop中使用各种开发工具进行开发的一些基础知识。然后演示了一个简单应用程序的开发过程,随后讲解了其内部工作原理。该章还概述了在设备上部署应用程序的方法以及使用MonoTouch软调试器调试应用程序的方法。
第2章介绍MonoTouch如何抽象化iOS SDK,以便使用C#开发本地类。首先概述了iOS SDK,并通过一个简单示例演示了Objective-C的开发过程,随后与相应的C#的开发过程进行了比较。通过这个示例,本章讲解了outlet的工作原理,对常用的iOS开发模式进行了比较,还演示了如何在C#中使用它们。最后概述了Objective-C的内存管理机制,并与MonoTouch的垃圾回收机制进行了比较,演示了如何在MonoTouch开发中注意这些问题以及何时在C#代码中考虑Objective-C模型。
第3章介绍了使用模型-视图-控制(Model-View-Controller, MVC)设计模式搭建MonoTouch应用程序的过程,还介绍了UIView类和UIViewController类,并通过触碰支持和加速度计的示例演示了如何在代码和Interface Builder中使用它们。
第4章介绍了如何使用iOS开发常用的几个基本类,还演示了如何使用iOS SDK封装多视图和控制器以帮助创建用户界面,以及几个抽象为不同功能的控制器,如地址簿、摄像头访问、发送电子邮件和播放iPod库中的音乐等功能。
第5章介绍UITableView和UITableViewController,并演示了一些通常使用表格的常见场景。随后讲述和演示了使用UITableViewController的基本模式,并演示了几个自定义UITableView的方法,为应用程序在视觉和性能上提供丰富的体验。该章还介绍了UINavigationController,并演示了如何结合UITableViewController使用它。
第6章讲述图形和动画子系统(核心图形(Core Graphics)和核心动画(Core Animation)),并分别讲解了如何在UIKit下使用它们以便在iOS中构建常见的基本动画。
第7章介绍核心定位(Core Location)框架,并演示了如何通过蜂窝、Wi-Fi或GPS等技术直接使用它来获取定位数据。然后深入研究了一些新的定位技术,如显著位置变更和区域监测。
第8章介绍MapKit框架,包括MKMapViewControl,并演示了如何在应用程序中创建交互式地图。还讲解了在MapKit中集成核心定位,以及如何添加标注和叠加地图来创建自定义的地图体验。
第9章介绍几种在MonoTouch中可用的Web服务技术。讨论了如何在MonoTouch开发中使用基于SOAP的Web服务、REST服务,以及JSON、XML、RSS和WCF。除了.NET外,该章还演示了如何在MonoTouch中使用CocoaTouch的 HTTP协议。
第10章演示了GameKit框架提供的基于蓝牙的服务发现和联网等网络功能,包括如何在设备之间创建语音通信。然后还演示了如何使用Bonjour直接发布和发现服务,使用了熟悉的.NET网络技术,如TcpClient。
第11章演示了在使用MonoTouch时,几种在iOS中可用的数据存储技术,如SQLite的ADO.NET提供程序、.NET序列化和NSUserDefaults。还创建了在第12章中要用到的示例应用程序。
第12章介绍了几种专门为iPad应用程序开发提供的类。继续完成第11章中的示例应用程序,演示了如何将一个iPhone应用程序转化为或扩展为一个既适用于iPhone和iPod Touch,又适用于iPad的通用应用程序。
目 录
第1章 Hello,MonoTouch
1.1 搭建开发环境
1.1.1 安装iOS SDK和苹果开发工具
1.1.2 安装MonoTouch
1.2 创建MonoTouch应用程序
1.2.1 创建用户界面
1.2.2 添加outlet
1.3 在设备上进行开发
1.4 使用MonoTouch调试器
1.5 小结
第2章 iOS SDK与MonoTouch
2.1 iOS SDK概述
2.2 通过示例将Object-C与MonoTouch进行对比
2.2.1 从Xcode开始编写应用程序
2.2.2 在MonoTouch中实现相同的功能
2.2.3 AppDelegate实现的比较
2.2.4 通过Xcode实现UIActionSheet
2.2.5 在MonoTouch中实现UIActionSheet
2.3 MonoTouch的工作原理
2.4 小结
第3章 视图和视图控制器
3.1 构建MonoTouch MVC应用程序
3.2 在IB中使用视图和控制器
3.3 为视图控制器及其视图添加功能
3.4 使用多个视图和控制器
3.5 实现自定义UIView
3.6 小结
第4章 常用的iOS类
4.1 用户界面视图和控件
4.1.1 UISegmentedControl
4.1.2 UISlider
4.1.3 UISwitch
4.1.4 UIPageControl和UIScrollView
4.1.5 UIActivityIndicatorView
4.1.6 UIProgressView
4.1.7 UIImageView
4.1.8 UIWebView
4.1.9 ADBannerView
4.2 设备功能
4.2.1 MFMailComposeViewController
4.2.2 MPMediaPickerController和MPMusicPlayerController
4.2.3 地址簿
4.2.4 UIImagePickerController
4.3 小结
第5章 表格和导航
5.1 UITableView和UITableViewController的概述
5.1.1 表格有什么用
5.1.2 在UITableView中显示数据
5.1.3 UITableViewCell部件与样式
5.1.4 使用表格和导航
5.2 其他的UITableView自定义功能
5.2.1 自定义表格及其单元格
5.2.2 增加多个区域
5.2.3 MonoTouch.Dialog
5.3 小结