《MonoTouch开发实践指南》一3.1 构建MonoTouch MVC应用程序

3.1 构建MonoTouch MVC应用程序

使用UIKit的MonoTouch应用程序通常都使用UIView和UIViewController来构建。这些都是用于构建模型-视图-控制器(Model-View-Controller,MVC)设计模式的iOS应用程序的主要类。
将应用程序的特定领域(Domain Specific)信息和应用程序的显示分离开来,通常会给应用程序带来好处。这种设计模式可以帮助开发人员在面对不断变化的功能需求时保持基础代码的稳定,有助于促进代码重用,并使构建单元测试的代码质量更好。MVC模式就是这样一种模式,是许多应用程序开发方案的常用模式。尤其是,CocoaTouch和MonoTouch都要用到大部分API中的MVC设计模式,所以花点时间来学习(复习)MVC及如何在MonoTouch中使用它是值得的。
MVC模式源自20世纪70年代末Trygve Reenskaug在施乐帕罗奥多研究中心(Xerox PARC)所做的工作,它将模型捕获的特定领域信息与给用户显示的信息分离开来。用户通常是指使用应用程序的人,但也可以是其他东西,如与脚本交互的另一个应用程序。在后一种情况中,脚本就是视图,它负责显示模型。对于iOS应用程序,视图就是用于人机交互的用户界面。如图3-1所示,MVC设计模式的关键是在视图与模型之间互相保持抽象。这种抽象通过“控制器”作为中介。控制器为模型和视图提供了一个中间层以使它们能够相互独立。
在第2章的示例中,并没有明确地创建控制器,只是简单地把AppDelegate作为控制器,这对于简单的演示没有问题,但通常将视图的控制器作为独立的类,专门作为视图的控制器。另外,不要让视图控制器做太多的工作(如支持多种不同类型的顶层视图),这样的超级控制器会导致在应用程序中出现紧耦合,使应用程序难于维护。
在UIKit中,屏幕上的一切都是视图。控制器有单个顶层视图,在视图里面可以添加按钮、标签、滑块等的子视图。视图负责显示和事件捕获,如前面的UIButton的TouchUpInside事件。但是,视图不会做任何事件处理,事件处理是由控制器负责的。
视图也没有其显示数据。例如,可以直接在代码中使用UITextField的文本。但是,这不是正确的MVC做法。视图只负责显示数据。如果将视图与数据耦合,那会让代码难于维护。例如,如果增加需求,要在另一个视图的标题(title)属性中显示相同的文本又会怎么样呢?如果视图拥有数据,就必须耦合该标题的视图与标签。接着又有了另一个需求,要删除第一个视图。这样做,标题的显示就会出现问题。即使这么一点不起眼的地方,也会因为一时顺手而出现问题。好的设计就是将字符串分离出来,或者作为独立的字符串,或者作为一个大类的属性,或者作为模型,让控制器作为模型和视图之间传输数据的中介。
将视图通过控制器从模型中分离出来,使代码更易于调试和重用。使用MonoTouch,可重用这点不容小觑。如果目标是多平台,就要保证模型和支持类与使用平台无关。第9章会更深入地探讨设计模式中代码重用问题。
由于视图和控制器是唯一的平台问题(在目前iOS这种情况下),所以要了解它们是如何工作的,以及如何使用工具在IB中或直接在代码中创建视图和控制器。

时间: 2024-12-28 15:48:36

《MonoTouch开发实践指南》一3.1 构建MonoTouch MVC应用程序的相关文章

《MonoTouch开发实践指南》一1.2 创建MonoTouch应用程序

1.2 创建MonoTouch应用程序 在本节中,将编写一个带有标签和按钮的简单应用程序,并通过单击按钮来改变标签的文本显示.完成后的应用程序将如图1-10所示. 1.2.1 创建用户界面 首先要做的是创建用户界面.返回刚才在MonoDevelop创建的包含一个空白窗口的应用程序,如果IB还没打开,双击MainWindow.xib文件打开IB.前面提及过,IB是苹果的用户界面设计工具,可以用它来创建应用程序的界面.如果曾经进行过Windows或ASP.NET开发,就会觉得它的作用有点类似于Vis

《MonoTouch开发实践指南》一导读

前 言 欢迎阅读本书.如果你是一个.NET开发人员且有兴趣开发基于iOS设备的本地应用程序,那么MonoTouch是个不错的选择.它在优雅的C#和.NET中融合了CocoaTouch框架和Objective-C语言概念,让其成为一个精心设计且乐在其中的技术.可以使用MonoTouch,在App Store和企业中部署应用程序(假设具有适用的许可证).甚至只需要一个免费版本的模拟器,就可以学习和尝试它,而不需要任何额外的费用.此外,如果你是一个学生,还可以使用带有折扣的学生版本. MonoTouc

《MonoTouch开发实践指南》一3.6 小结

3.6 小结 本章讲述了iOS开发中的两个关键模式:MVC和委托.本章还演示了如何使用IB或者使用代码构建一个包含视图和控制器的MonoTouch应用程序:还演示了iOS中的一些功能,如加速度计和触碰支持.在iOS中还有许多功能,包括大量内置控件.第4章将讲述iOS SDK中的一些控件及其功能.

《MonoTouch开发实践指南》一第3章-3.0 视图和视图控制器

第3章-3.0 视图和视图控制器 3.1 构建MonoTouch MVC应用程序 3.2 在IB中使用视图和控制器 3.3 为视图控制器及其视图添加功能 3.4 使用多个视图和控制器 3.5 实现自定义UIView 3.6 小结 MonoTouch和CocoaTouch的基础是基于一些基本类和模式建立起来的.本章将讲述如何在MonoTouch中根据这些模式使用基块类来构建应用程序,这些基块类是UIKit.UIView和UIViewController的一部分.

《MonoTouch开发实践指南》一2.2 通过示例将Object-C与MonoTouch进行对比

2.2 通过示例将Object-C与MonoTouch进行对比 下面通过示例来说明上面讲到的一些概念.前面提到的UIActionSheet将会在示例中使用.通过Objective-C与C#的对比,将有助于清楚地了解如何使用MonoTouch开发应用程序. 注意 通常,使用MonoTouch开发应用程序不需要Xcode或Objective-C,这里这样做的目的是作为基础知识辅助说明MonoTouch的设计.如果有兴趣想了解更多的相关技术,推荐阅读Stephen G. Kochan写的<Progra

《MonoTouch开发实践指南》一2.3 MonoTouch的工作原理

2.3 MonoTouch的工作原理 MonoTouch使用静态编译方式将代码编译为ARM二进制代码.使用MonoTouch创建的每一个应用程序都是独立的,也就是说,应用程序所需要的东西都要打包,之所以这样,是因为iPhone不允许使用共享库.MonoTouch通过绑定方式向C#公开iPhone的原生库,因而不需要在语言之间做转换.通过静态编译(Ahead-Of-Time,AOT)生成ARM二进制代码,MonoTouch应用程序就可满足发布应用程序到App Store的所有必需条件. 注意 在写

《MonoTouch开发实践指南》一1.5 小结

1.5 小结 本章详细介绍了使用MonoTouch搭建iOS开发环境的过程中.在这个过程中,介绍了一些用于开发和维护iOS应用程序的工具.学习使用MonoDevelop IDE和苹果的IB开发一个简单的Hello World应用程序,并通过苹果工具.MonoDevelop.MonoTouch和iOS Developer Program Portal的共同协作将应用程序部署到设备.

《MonoTouch开发实践指南》一1.1 搭建开发环境

1.1 搭建开发环境 在使用MonoTouch开发之前,有许多事情需要先验知识(priori).首先从苹果(Apple)入手获取所需要的一切,然后过渡到必不可少的MonoTouch上. 1.1.1 安装iOS SDK和苹果开发工具 欢迎来到使用.NET进行iOS应用开发的世界.我敢肯定,你现在会兴奋得想立刻开始编写程序,不过,首先要做的是在手头那部闪闪发亮的Mac上搭建开发环境.然后熟悉一下在模拟器和iPhone上进行开发所需的所有步骤以及应用程序如何在它们中运行.注意 本书的内容也适用于iPo

《MonoTouch开发实践指南》一2.1 iOS SDK概述

2.1 iOS SDK概述 MonoTouch以iOS SDK为基础,通过开发工具MonoDevelop和它与IB的集成,增加对C#语言的支持.而且,它是基于Mono的.NET实现的,因而带来了许多类库,支持现有的代码以及垃圾回收机制..NET开发者会觉得与Mono.MonoDevelop一见如故,但除非之前有使用Objective-C和Xcode进行Mac或iOS开发的经验,否则会对iOS SDK和它在MonoTouch中的实现感到陌生.本章将介绍iOS SDK和MonoTouch的工作原理.