1、中图分类号:TP311.1UDC:620密级:公开学校代码:10094万方数据硕士学位论文(学历工程硕士)基于iOS平台播放*的设计与实现The Design and Implementation of the PlayerBased on iOS Platform研究生姓名:张超 指导教师:赵冬梅教授 学科专业:计算机技术 研究方向:计算机网络与信息安全 论文开题日期:2014年06月02日_|醜学位论文原创性声明本人所提交的学位论文基于iS平台播放器的设计与实现,是在导师的 指导下,独立进行研究工作所取.得的原创性.成果。除文中已经注明引用的内容外,. 本论文不包含任何其他个人或集体已经发
2、表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均己在文中标明。 本声明的法律后果由本人承担。指导教师确认(签名): y呔年艾月2女曰.论文作者(签名):夂年r月忒日学位论文版权使用授权书本学俾论文作者完全了解河北师范大学有权保留并向国家有关部门或机构 送交学位论文的复印件和磁盘,允许论文被查阅和借阅。本人授权河北师范大学 可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩 印或其它复制手段保存、汇编学位论文。(保密的学位论文在年解密后适用本授权书)论文作者(签名):指导教师(签名):0V#年夂月日74一年i:月呤曰随着时代的发展,人们越来越喜欢用手机终端来欣赏
3、视频,方便而快捷,当下流行 的视频格式有很多种,如MOV,MP4,3GP,AVI,FLV,RMVB等,对多种视频格式都支持 的手机应用播放器成了人们娱乐生活中所必需的应用。然而系统原有的视频播放器 支持的视频格式有限,难以满足人们通过移动终端观看视频的需要,所以特别需要开发 一个可以支持大多数视频格式的全能影音播放器。因此本文主要研究如何实现这个全能影音播放器。该播放器可以得到程序沙盒中的 视频文件,并可以对其进行管理。应用VLC技术对视频文件进行解码和语音的同步播 放。该播放器在MACOSX系统中进行开发,开发工具是Xcode,开发语言是Object-C, 在iPhone,iPod touc
4、h等设备上进行调试。基于iOS的播放器主要功能是视频的播放,所有工作都是围绕如何进行视频的解码 与播放展开,因此论文的主要工作分为四个方面:第一,视频的解码与播放。本研究采 用了 VLC技术实现视频的解码和播放,其支持大量的编码格式和传输方式,主要使用 了 FFmpeg作为其解码器。播放视频时可以拖动进度条实现视频的跳跃,可以暂停、调 节音量大小、缩放屏幕等操作。第二,视频文件的管理。主要实现对本地文件的管理, 如可通过iTunes导入本地文件,删除本地文件,查看视频详细信息,打开视频文件进行 播放等。第三,流媒体文件的添加和管理。用于流媒体的管理和播放。可以手动输入添 加流媒体文件,也可通过
5、扫描二维码添加流媒体文件,二维码扫描的实现采用了第三方 库ZBar。添加成功时将用户添加的流媒体信息保存到数据库中。第四,播放历史记录。 记录播放过的本地文件和流媒体文件,以便查看和快速跳转。采用SQUte数据库对播 放信息进行保存。除核心模块以外,还有用户的反馈模块和系统的介绍模块。用户可以 以邮件形式向开发者进行使用情况的反馈。综合以上研究,幵发了一款基于iS平台的通用播放器。本研究探索视频解码技术 和视频音频同步播放,系统的实现打破了 iS自带播放器对于视频格式的限制,支持多 种当下主流视频格式的播放。该研究与实现除了具有重要的学术方面的研究价值,还有 非常大的实际应用前景和市场需求。关
6、键词:iOS iPhone播放器VLC FFmpeg流媒体v万方数据万方数据AbstractWith the development of the times, people are showing a growing interest of watching videos on their mobile phones, convenient and flexible. There are many popular video formats nowadays, like MOV, MP4, 3GP, AVI, FLV, RMVB and some others. The mobile app
7、s which can support various kinds of formats are a necessity in peopled daily entertaining life. However, the existent video player possessed by intrinsic iOS system can just satisfy a limited number of video formats, unable to meet peopled needs for watching videos on mobile devices. So it is in an
8、 urgent need to develop a universal video player which is able to support most video formats.This essay puts its main efforts on the research of such a player mentioned above. This player can get video files from the sandbox and then manage them. It applies VCL technique for the decoding and sound p
9、arallel playing on the video files. This player is developed in MAC OS X system, Xcode as the developing tool and Object-C as the developing language. Debugging of this player is also done on iPhone, iPod touch and other devices.The main function of the player based on iOS is video playing and all w
10、ork involved is around how to decode and play the videos. Therefore the main contents of this essay are divided into 4 parts, listed as follows: First, the decoding and playing of videos. This research adopts VLC technique for the video decoding and playing fulfillment, which supports plenty of codi
11、ng formats and transferring methods. It mainly uses FFmpeg as the decoder. The progress bar can be dragged during the video duration for the video skip operation, as well as pause, volume changing, zooming in and out and other operations. Second, the management of video files. It mainly fulfills the
12、 management of local files, like importing local files through iTunes, deleting local files, checking detailed information of videos, opening video files for playing and some others. Third, the adding and management of flow media files. It targets on the management and playing of flow media. It make
13、s it possible to manually input for adding flow media files or scan 2-dimesion bar for their adding. The latter adding method adopts a foreign library-ZBar. The flow media information added by users can be then saved into the database after successfully added. Fourth, playing of the records. It is u
14、sed to recordthe local files and flow media files having been played before, making it easy for the files checking and skipping. It applies SQLite database to save the playing information. Apart from core module, there are also user feedback module and system introduction module. Users can make feed
15、backs to developer in mail formats according to use condition.With a comprehensive study of the research mentioned above, a general player based on iOS platform is developed after a comprehensive study of the researches mentioned above. This research makes a study about the video decoding technique
16、and synchronous playing of both video and audio. This system breaks the restriction for the video playing in formats accepted only by the player of iOS, which means supporting video playing in most of the mainstream formats. Besides possessing value in academic field, this research and fulfillment a
17、re of great potential in fixture application and market requirement.Key Words : iOS, iPhone, Player, VLC, FFmpeg, streaming mediaVIm rnAbstractV1绪论11.1研究背景11.2研究目的11.3研究的意义21.4论文的组织结构21.5 本章小结32 iOS平台相关技术42.1 iOS开发环境42.1.1 iOS系统架构42.1.2 iOS开发环境与工具62.1.3 iOS 开发语言 Object-C82.2 iOS开发模式:82.2.1 MYC82.2.2
18、 Target/Action 模式102.2.3 Singleton 模式102.2.4 Delegation 模式102.3数据的持久化112.4二维码扫描112.5常用视频格式介绍112.6流媒体122.7 VLCMA132.8本章小结133 需求分析143.1功能需求简介143.2 主要模块介绍153.2.1文件管理模块介绍153.2.2流媒体管理模块173.2.3视频播放模块介绍193.2.4历史记录管理模块介绍213.2.5关于界面模块介绍233.3 非功能性需求分析253.4系统运行环境253.5 本章小结264系统设计274.1设计与开发的总体思想274.2系统整体架构274.3
19、系统主要模块设计274.3.1视频文件管理模块274.3.2视频播放模块284.3.3流媒体管理模块294.3.4历史记录模块314.4交互设计314.4.1交互设计原则314.4.2界面层次324.4.3界面元素安排324.5本章小结335系统实现345.1系统核心模块的实现345.1.1视频文件管理模块345.1.2视频播放模块355.1.3流媒体管理模块375.1.4历史记录模块395.2系统实现整体展示405.3系统关键实现实例展示455.3.1本地文件管理 45VIII5.3.2流媒体文件管理505.3.3历史记录管理525.4本章小结556总结与展望566.1 系统的成果566.2
20、系统的不足576.3展望57参考文献58gC it60万方数据万方数据1绪论1.1研究背景随着移动互联网时代的到来,手机逐渐成为了新的娱乐终端。人均用在移动电子 设备上的时间所占日常消遣的时间比重日益增加,移动设备对人们生活的影响也越来越 大,人们在生活甚至工作上都对移动设备产生了依赖感。在生活中,观看视频是人们生 活中很重要的一部分,视频的播放也逐渐成为手机的一个重要功能,伴随着手机屏幕的 发展,已经从早期的黑白屏发展到了如今的高清巨屏,人们也越来越喜欢在手机上欣赏 视频,不仅给娱乐生活带来了很大的方便,也很有利于工作的开展。基于这样的背景, 探索研究手机应用视频播放器很有必要。对于数字视频
21、,由于多个公司都有着自己的标准,造成了现在存在着大量的视频格 式。美国苹果公司推出的基于iS移动设备比如iPhone手机,仅支持MOV, MP4等少 数视频格式,如果用户想在iPhone手机上欣赏不支持格式的视频,比如网络上比较流 行的18,人1彳1等格式,用户必须在电脑上进行转码,转码成10,皿4等 iPhone支持的格式,而转码将占用大量的CPU资源,消耗大量的时间,浪费了用户的 宝贵时间。为此,iPhone平台上需要一个支持多种格式视频播放的软件,而iPhone十 分强大的硬件性能,使其具备了视频解码的必要技术条件2。除此以外,近几年来苹果移动设备越来越受到国内外用户的认可,流畅的操作,
22、舒 适的交互设计,不仅得到越来越多的学生、白领的青睐,也很受中青年以及商务人士的 喜爱,因此苹果移动设备占据着非常高的市场比重。无疑,基于iS的应用有较高的使 用率,与人们生活紧密联系。1.2研究目的当下市场上基于iOS平台的自带播放器的稳定性等方面已相当成熟,但是系统自带 播放器对于视频格式的支持具有很多的局限性,这使得很大一部分用户对移动设备的视 频播放功能需求难以满足,因此研究开发一款支持大多数视频格式的通用播放器具有很 大的市场需求,可以更好地满足视频爱好者的需要。基于iOS市场上对于多种格式视频的通用播放要求,针对用户对播放器需要能够支 持多种不同格式视频的播放需求,开发一款能够满足
23、用户需要和解决市场需求的播放1万方数据器。探索视频的解码和视频音频的同步播放技术,为市场上视频解码器及播放器的研究 与开发提供技术支持。探索学习VLC技术,研究采用FFmpeg3作为解码器的视频解码技术,开发一个支 持大多种格式视频播放的全能影音播放器,比如当下主流的RMVB,AVI, FLV,MOV, MP4等视频格式,使用户打破苹果系统自带播放器对于视频格式的限制,不再仅限于 单一的几种视频格式,而且不用转码,直接通过iTunes将视频导入到程序中进行播放, 解决用户用iPhone或者iPod观看视频的麻烦。1.3研究的意义基于iOS平台的播放器研究意义主要包含以下两个方面:一是系统自带视
24、频播放器的研究实现虽然已经很成熟,但支持视频格式局限性较 大,市场上对通用多种视频格式的播放器有较大的需求。本系统实现了对当下主流视频 格式的解码,支持大量的编码格式和传输方式,打破iS自带播放器对视频格式的限制, 解决了苹果移动设备用户观看视频的烦恼,用户可以直接通过iTunes将视频倒入程序 中进行播放,极大的方便了用户的使用。二是该研究程序具有流媒体播放功能,满足市场上用户对网络视频资源的需求,本 系统支持互联网上的流媒体资源,使用户手机在手就能享受移动互联网带来的便利。而 且操作简单,适用于不同年龄段的人群需要。如此一来扩展了 iPhone手机的功能,增 强了 iPhone的多媒体能力
25、,满足电子市场上用户对播放器的更高要求。综上所述,基于苹果平台移动终端的视频播放器的研究与设计实现十分重要,该 研究与实现除了有重要的学术方面的研究价值,还很有非常大的实际应用前景和市场 需求。1.4论文的组织结构本论文通过对基于iS播放器的现状分析和总结,对一款基于iS平台的通用的、 支持多种播放格式的播放器进行设计和实现。本篇文章的结构如下:第一章是绪论,对基于iS平台播放器的研究背景、目的、意义和国内外播放器的 研究现状,以及本论文的组织结构。第二章是本项研究中用到的相关技术。本研究涉及到的相关技术较多,包含了 iS 开发的环境、开发工具和语言,iS常用到的开发模式,数据的持久化方法,二
26、维码扫 描技术,VLC,流媒体,并对当下常用的视频格式进行了介绍。万方数据第三章是对本研究就行的需求分析,包括功能性需求分析和非功能性需求分析,对 本研究中涉及到的主要模块进行了介绍,以及对系统运行环境的分析说明。第四章是基于iS播放器的系统设计。介绍了开发与设计的总体思想,系统整体结 构,系统主要模块设计和本系统的交互设计。其中详细介绍了系统主要模块的设计,包 含视频文件管理模块,视频播放模块,流媒体管理模块,历史记录模块。第五章是播放器系统的实现。对整个系统进行详细的展示说明。对系统关键实现实 例进行了展示,其中主要实例有本地文件管理,流媒体文件管理,历史记录管理等。第六章是最后一章,是对
27、基于iS播放器涉及到的相关技术研究和设计实现的总结 与展望。归纳系统的成果,总结系统的不足,对后续的研究工作进行展望。1.5本章小结本章是绪论,主要介绍了基于iS播放器的研究背景、研究目的、研究的意义和本 论文的组织结构。苹果系统自带的播放器具有局限性,只支持少量视频格式的播放,当 用户想看特定格式视频时还需先从电脑上进行转码,这使得用户很不方便。在此背景下, 目的就在于开发出一款支持大多数视频格式的通用播放器,以便用户的使用,方便了用 户观看不同格式的视频,不仅如此,还支持网上流媒体的播放,用户可以享受到互联网 资源。3万方数据万方数据2 iOS平台相关技术2.1 iOS开发环境2.1.1
28、iOS系统架构iOS是美国苹果公司开发的一款操作系统,该操作系统是苹果公司为移动终端产品 自主开发的。iS不仅可以在苹果手机中使用,还能够应用在平板电脑等电子产品上, 包含一系列市场上很畅销的电子产品。由于这样的市场大环境以及参考苹果系统中自带 视频播放器对于视频格式的局限性,本研究采用了 iS作为通用影音播放器的开发平 台,一是由于其具有非常广阔的市场前景,二是因为iS也具有很好的技术支持。苹果系统架构是分层结构,可以看作是从低到高多个层的集合41,从低到高分为核 心操作系统层Core 0S,核心服务层Core Service,媒体应用层Media,可触摸层Cocoa Touch。各个不同层
29、的集合实现了 iS技术,基础的服务是由底下的层来提供,提供给 应用程序,而处于上面的层则包含了丰富的技术和服务。iS操作系统层次划分见下图 所示:核心服务层(Core Service)图2.1 iOS操作系统层次划分核心操作系统层(Core 0S):在iOS架构体系中,其中处在最底下一层的是Core OS层,即核心操作系统层,该层主要负责一些重要的操作任务,比如该层负责系统与 硬件的相互的交流等操作。该层包含的主要组件有OS X Kernel,;File System,Mach3.0, Keychain, Certificates 等。核心服务层:即Core Service层,该层在iOS架构
30、体系中处在核心操作系统层Core OS层的上边的位置。核心服务层里的框架包含Foundation、Core Location、CFNetwork、5万方数据Core Foundation层。其中为iOS程序开发提供和服务功能和基本数据管理的是Core Foundation 框架5。媒体应用层:即Media层,Media层是第三层,其提供的不同技术相互结合后能够 非常出色的完成各种多媒体服务的应用和相关开发,为手机、平板灯移动终端带来最好 的多媒体体验。该层中包括了音频技术、视频技术、图形图像等相关技术,这些相互结 合的技术为APP增色很多,为用户带来了更好的多媒体体验。可触摸框架层:该层处在各
31、层的最上层,开发者可以通过该层提供的软件开发框架, 可以研发出各种可以实现人机交互、触摸操作的应用程序,为开发各种各样的智能终端 软件提供了便捷的方法和技术支撑。这些框架当中,UIKit是苹果应用程序的核心框架6,这是因为该框架提供了某些 应用程序运行所不能缺少的对象,例如触摸屏动作、操作等用户操作。这样就可以使程 序知道用户有哪些输入,从而进一步通过屏幕显示。iOS中的不同框架提供了不同的服务和功能,可以通过这些来进行苹果应用程序的 开发。如下图所示,在项目的开发中常用到的以及本项目中需要用到的基本框架:表2.1常用的iOS SDK框架列举框架名称框架的主要功能介绍Foundation提供O
32、bject-C基础类和基本数据类型以及操作系统服务等UIKit提供了基本的UI界面功能和识别用户触摸操作等功能CoreGraphic提供媒体层里很多与图像有关的功能Media Player提供视频和音频的播放功能CoreFoudation提供了抽象数据类型如 XML,Unicode strings, URL 等Audio Toolbox提供音频录制和回放的底层API,同时也负责管理音频硬件CFNetwork访问以及配置网络,例如 HTTP, FTP,Bonjour Services 等上图中,列出的UIKit、Foundation和CoreGraphic这三者都是默认设置下程序工程文件自带的三
33、个基本框架,我们在涉及到具体的应用软件开发中,单单使用iS自带的 框架肯定是远远不够的,所以在某些不同情况下也会需要用到第三方的开源库,从而进 行相关负责问题的解决以及其它特定功能的实现7。万方数据2.1.2 iOS开发环境与工具美国苹果公司提供的iPhone开发工具包是iPhone SDK8,iPhone SDK工具包提供了 一系列的开发工具,这些开发工具包含面广且完整,可以独立开发苹果公司的各类移动 设备的应用程序,支持的设备包括iPad,iPhone等移动电子设备。这些工具具体有Xcode, IPhone Simulator, Instruments, InterfaceBuider(1
34、) Xcode - Xcode与windows平台里的visual studio功能作用相似,是苹果公司 为iS开发提供的集成开发环境IDE,是一个开发工具集,幵发人员所做的创建工程, 编写代码,编译代码,调试程序等开发操作都可以通过Xcode以及其提供的工具进行开 发工作。编译器使用的是GCC编译器9。(2) IPhone Simulator-iPhone模拟器1Q。在苹果应用开发过程中,每完成一个模 块或一个版本的开发工作后都需要对代码进行调试,查看阶段性的开发成果,若每一次 的调试查验都需要在iPhone或者iPad设备中运行的话是非常繁琐的过程。这时,模拟 器IPhone Simula
35、tor简化了这个过程,可以模拟移动设备显示程序效果,不需要移动设 备就能尽情享受开发,iPhone模拟器既可以iPhone也可以非常不错的模拟iPad。如下 图所示:图2.2 iPhone模拟器7万方数据模拟器为开发者的开发过程带来了很大的便利,开发人员开发应用程序时可以利用 模拟器看到编写代码和修改代码的效果,不需要将编写的程序装到iPhone或iPad等实 际设备上,如此一来为开发人员节省了很多时间,提髙了开发效率。除此以外,在模拟 器中运行编写的代码之前不需要购买和安装开发人员证书。不过,顾名思义模拟器是模 拟用的,具有局限性,有些实际设备具有的特性模拟器是没有的,如模拟器不能提供设 备
36、传感器读数,不能模拟复杂的多触点事件,也不能显示某些类型的图形(如0PenGL 图形)等。因此,模拟器不能替代真正的苹果移动设备iPad和iPhone。尽管如此,模 拟器的功能也还是很强大的,对于大多种类的苹果软件开发是够用的,在开发中是 开发者必不可少的开发工具。当程序的开发进展到一定程度,就需要使用模拟器来检验效果。在模拟器启用程序 之前,需要Xcode打开项目的状态,将Active SDK设置为模拟器,即iPhone Simulator, 然后单击创建和运行键Build and Run,随后刚刚开发的程序在模拟器中启动显不。开发 人员查看界面和运行效果,因为是模拟器而做不到用手指来操作界
37、面,借用鼠标和模拟 器中的应用程序进行交互操作,类似于用手指在做各种手势,来实现如单击、拖动等操 作。若设计到输入的程序,可以通过鼠标点击获得输入键盘,键盘显示出来后通过鼠标 点击键盘来实现输入字段。除此以外也可以通过电脑键盘来输入,或者通过复制、粘贴 实现字段输入。类似于真实苹果移动设备iPhone和iPad,当在模拟器中需要从程序中退出时,单 击主屏幕上的虚拟按钮Home键即可退出当前程序。每次在模拟器中启动一个新编写的应用程序时,模拟器中将自动安装启动的该程 序,这一点与在类似于在实际设备iPad中安装软件。当然,安装后不会自动卸载程序, 当不需要测试该程序或要检验新版本时需要手动将该应
38、用程序删除,不然会一直保留在 模拟器中。删除的方式就是在要删除的应用程序图标上单击并按住鼠标,保持几秒后图 标开始动摇,这是图标左上角出现一个叉号,叉号就可以把安装的应用程序从模拟器中 删除。也就是说,在真实苹果移动设备上卸载软件与在模拟器中卸载软件的方法没有任 何的不同。把iPhone模拟器恢复到原始状态的方法是,从模拟器iPhone Simulator中点 击重置和设置选项Reset Content and Settings,即可重置模拟器11。当程序员开发完成或有一定阶段性进展,就可以上传到设备上查看开发效果,程序 开发完成并调试完成后就可以提交到苹果商店中。万方数据(3) Instru
39、ments-该工具是性能测试工具,功能十分强大,能够帮助程序员在程 序运行的时候进行性能评估,所反馈的评估接种中包含一些列有关的性能指标,给出的 包括网络的使用状况和内存测试等性能指标。(4) 111&68111(161:-是1?111801(;中用语用户应用程序界面设计和软件测试的 一款工具1应用与开发程序中提供了苹果应用开发中常用的设计模型和控件等,可用 于应用程序可视化界面的构建与编辑操作。该工具的使用使开发者的开发工程更加灵 活,开发人员可以根据不同项目的不同需求来进行不同的相关设置。2.1*3 iOS 开发语言 Object-C0切61-(:13】是iOS的开发语言,该开发语言是Br
40、and J.Cox在上个世纪八十年代设 计出来的,Object-C设计的基础是一种叫做SmallTalk-80的语言。Object-C有自己明显 的不同特征,该语言更为彻底地支持动态机制,很多对象本身的数据信息被编译器保留 了下来,正式由于这一点某些编译的时候做出的选择能够推迟,直到运行时再决定。Object-C也具有封装、继承、多态等特点,这与其他的面向对象是一样的。bject-C 语言中的每个对象都有实例变量和方法的,实例变量是数据结构的字段,方法是对象之 间的函数的调用14】。Object-C不支持多重继承,在运行时可以允许根据字符串名字来访 问方法和类,可以动态链接以及添加类,因为Ob
41、dect-C是动态定性,即dynamicaly typed。面向对象的编程有一个重要特点,就是可以支持可重用代码单元的构建,这些可重 用代码单元能够与过程性开发中的一般常规性流程实现分离。过程流不是面向对象的程 序必需的,面向对象是围绕着对象及其方法提供的智能数据结构而开发的。Mac OSX 上的Cocoa和iPhone中的Cocoa Touch提供这些智能对象的一个巨大的库15】。这个智 能对象巨大的库给予了开发程序员iOS丰富的工具储备箱,从而开发人员可以用最少的 工作量和代码量就能创建出来既高效又强大的苹果应用程序。2.2 iOS开发模式2.2.1 MVC 模式Objective-C是苹
42、果系统开发中采用的编程语言,前文也详细介绍了该语言的特点, 其也是一种面向对象的编程语言,因此苹果系统的开发架构也是面向对象的技术。iOS 应用的开发也是采用MVC设计模式16,即模型(Model)、视图(View)、控制器 (Controller)设计模式。顾名思义,该设计模式把程序的功能划分为对应模型、视图和 控制器的三种不同种类:9万方数据(1) 模型(Model):封装应用程序状态,保持应用程序数据的类,响应状态查询, 通知视图进行变更,可以把它看成数据的提供者。在MVC设计模式中,模型是数据处 理最多的一个部分,是MVC的核心部分。由于模型能把所有对数据的操纵集中在一个 部件里,别的
43、部件仅仅通过调用模型层提供的接口就能够使用数据,如此一来可减少代 码的重复性17。(2) 视图(View):对模型数据的展示通过视图完成,向控制器发送用户进行的操 作,向模型发送变更请求,允许控制器对其进行变更,概括之,它是应用软件显示的界 面,能被用户直接看到的。对于iS来说,视图(View)指的是用户呈现内容的视图 容器。这些容器根据显示内容的不同而又不同类型。举几个iS中视图容器的例子:滚 动窗口的容器是UlScrollView类,这一类视图中能添加子视图从而形成视图树状的结 构;还有只显示数据内容而不能添加子视图的,如UllmageView,该视图只能作为视图 树状结构里的叶子节点;所
44、有视图容器的基类是UlView。需要说明的是,在MVC中 业务流程的处理是由模型部分来完成的,而不是视图,视图仅限于对用户请求进行处理 和采集用户所需要的数据。(3) 控制器(Controller):定义用户的行为,将用户操作与视图更新进行映射,选 择响应视图,控制器在MVC设计模式中是以中介或者协调者的身份存在的。接收用户 的数据输入,联系模型、视图来一起完成用户的请求。控制器本身并不对用户请求和提 供的数据做出响应,而是通过视图层来接收用户的输入后交给模型(Model)来处理。 模型的处理爱我牛逼后将反馈结果传给控制器,控制器再将收到的反馈结果传给对应的 视图层,进而将数据信息反馈给用户。
45、下图2.4是对MVC设计模式模型-视图-控制器三者之间的信息交互、相互联系的 展示:图2.3 MVC关系图如图所示,MVC设计模式中,模式(Model)和视图(View)之间不直接进行信10万方数据息传递,从中协调和传递是通过控制器(Controller)来实现的,可以说控制器是两者之 间的媒介。通过用控制器来接收用户操作,控制器将这些接收的操作转换成信息,然后 再通知视图和模型当前用户的动作。MVC模型在苹果应用开发中的使用要注意一下几个方面:(1) 模型和视图不能直接对话,之间的联系是通过控制器来实现的;(2) 控制器可以和模型直接进行对话,模型是通过KVO机制和Notification实
46、现 与控制器间接通信的;(3) 控制器可以和视图直接对话,视图把事件告诉给控制器是通过action来实现 的,控制器是视图的直接数据源,数据的来源是控制器从模型中取得的。2.2.2 Target/Action 模式称之为目标/动作模式,该模式是控件使用模式,也就是指iPhone用户界面中大部 分控件使用的模式。在程序开发的过程中,每当在界面中创建一个控件,就要分配一个 target对象(目标对象)向所创建的控件发送消息。而且要为分配的这个目标对象提供 一个方法,在特定的动作发生时会调用这个对象提供的方法【18。2.2.3 Singleton 模式Singleton模式又称为单例模式19】,是一种在软件开发过程中常见的设计模式。它 的核心思想是只包含一个被称为单例类的类。通过单例模式,我们可以保证系统中一个 类只有一个实例并且该实例便于外界的访问,从而可以更好地节约系统资源。单例模式 保证在系统中某个类的对象只存在一个,从而保证了开发过程中的灵活性和方便性。这 个模式的使用频率很高,通过一个单例类,便可以实现在不同的窗口这间传递数据,从 而控制应用程序的共享资源。2.2.4 Delegation 模式Delegation模式也称作委托模式,委托模式自然有“委托方”和“被委托方”,所以一 定是有两个对象,两个对象一起参与一个请求的处理,其中一个对