首页 iOS音乐播放器-毕业论文

iOS音乐播放器-毕业论文

举报
开通vip

iOS音乐播放器-毕业论文iOS音乐播放器-毕业论文 基于iOS的在线音乐播放系统的开发 摘 要 音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。它涵盖了各种音乐格式的播放工具,比如:MP3播放器,WMA播放器,MP4播放器等。它们不仅界面美观,而且操作简单,带你进入一个完美的音乐空间。手机音乐播放器是一种在手机上用于播放各种音乐文件的多媒体播放软件。它们在手机中运行,不仅界面美观,而且操作简单,带你进入一个完美的音乐空间。 例如QQ音乐播放器通过贴心的设计、卓越的体验、海量的曲库、最新的流行音乐、专业的分类、丰富的空间背景音...

iOS音乐播放器-毕业论文
iOS音乐播放器-毕业论文 基于iOS的在线音乐播放系统的开发 摘 要 音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。它涵盖了各种音乐格式的播放工具,比如:MP3播放器,WMA播放器,MP4播放器等。它们不仅界面美观,而且操作简单,带你进入一个完美的音乐空间。手机音乐播放器是一种在手机上用于播放各种音乐文件的多媒体播放软件。它们在手机中运行,不仅界面美观,而且操作简单,带你进入一个完美的音乐空间。 例如QQ音乐播放器通过贴心的设计、卓越的体验、海量的曲库、最新的流行音乐、专业的分类、丰富的空间背景音乐、音乐分享等社区服务,让QQ音乐成为中国网民在线音乐生活的首选品牌,引领着人们的音乐生活方式~音乐将是人们所关注的重点,也是提高水平的必要途径之一。 本文主要介绍了iOS平台以及基于该平台的音乐播放娱乐系统的发展现状,并且详细地介绍了。本系统是一款基于iPhone平台的音乐播放系统和手机游戏,本地播放,本地游戏为一体,支持mp3等主流音频。资源占用率小,运行效率高,操作简洁,扩展能力强。本系统播放画面流畅,具有声效和图效上的听觉及视觉的享受。 使用本音乐播放您可能会感觉到身心愉悦, 在听音乐的同时能够玩游戏, 其中采用SQLite数据库,常用iPhone控件等技术,模块与模块间低耦合,高内聚,采用模块化方法编程,维护性较高。 关键词:iPhonE;SQLITE;游戏;IOS;控件 1 The development of Online Music Broad cast System Based on iOS Abstract The music player is a multimedia player software to play music files. It covers the tools of a variety of music formats, such as: MP3 player, WMA player, MP4 player, etc.. Not only are they beautiful interface and easy to operate, to bring you into a perfect space for music. Cell phone music player is a multimedia player software to play music files on the phone. They run in the phone, not only beautiful interface and easy to operate, take you into a perfect space for music. QQ music player through the thoughtful design, exceptional experience, the massive music library, the latest popular music, professional classification, space background music, music sharing, community service, QQ music online music life of the Chinese netizens the brand of choice for leading the people's music lifestyle! The music will be the focus of the essential means of raising the level of one. This paper describes the iOS platform, as well as the development of the entertainment system based on the platform of music playback status quo, and described in detail. This system is a music player and mobile games based on the iPhone platform, local playback, local game as a whole, support for mp3 and 2 other mainstream audio. Small rate of resource consumption, high operating efficiency, simple operation, and expansion capability. The playback screen and smooth, with the effect on the sound and Figure hearing and visual enjoyment. To use the music player, you may feel relaxed and able to play games while listening to music, people in infinite joy, which uses low-coupling in the SQLite database, common iPhonecontrols, modules, and modules, high together, using a modular approach to programming, to maintain the high。 Keywords: iPhone;SQLite;Music;Game;ios;Contr ol; 3 目 录 基于iOS的在线音乐播放系统的开发 ......错误~未定义书签。 The development of Online Music Broadcast System Based on iOS 错 误~未定义书签。 第1章 绪论 ........................................................错误~未定义书签。 1.1 课题开发背景 ..........................................................错误~未定义书签。 1.2 音乐播放娱乐系统框架设计开发的现实意义 ......错误~未定义书签。 1.3 本系统预达到的目标 ..............................................错误~未定义书签。 第2章 在线音乐播放系统开发技术简介 ...错误~未定义书签。 2.1 Objective-c简介 ...................................................错误~未定义书签。 2.1.1 ios系统框架....................................................错误~未定义书签。 2.1.2核心操作系统层和核心服务层........................错误~未定义书签。 2.1.3应用程序框架....................................................错误~未定义书签。 2.2 SQLite数据库介绍 .................................................错误~未定义书签。 2.3 XCode ........................................................................错误~未定义书签。 第3章 在线音乐播放系统需求分析 ...........错误~未定义书签。 3.1 在线音乐播放系统的可行性分析 ..........................错误~未定义书签。 3.2 在线音乐系统功能需求分析 ..................................错误~未定义书签。 3.2.1 功能需求...........................................................错误~未定义书签。 根据系统功能划分,本系统详细需求描述如下:...错误~未定义书签。 第4章 在线音乐播放系统设计 ..................错误~未定义书签。 4.1 在线音乐播放系统总体架构设计 ..........................错误~未定义书签。 4 4.2 模块功能设计 ..........................................................错误~未定义书签。 4.2.1 音乐播放功能模块...........................................错误~未定义书签。 4.2.2 音乐信息功能模块...........................................错误~未定义书签。 4.2.3 在线搜索音乐功能模块...................................错误~未定义书签。 4.2.4 在线下载功能模块...........................................错误~未定义书签。 4.2.5 水果连连看功能模块.......................................错误~未定义书签。 4.2.6 音乐视频功能模块...........................................错误~未定义书签。 4.2.7 音乐播放设置功能模块...................................错误~未定义书签。 第5章 在线音乐播放系统实现 ..................错误~未定义书签。 5.1 系统初始化的实现 ..................................................错误~未定义书签。 5.2 音乐播放的实现 ......................................................错误~未定义书签。 5.3 音乐播放列表的实现 ..............................................错误~未定义书签。 5.4 在线搜索音乐的实现 ..............................................错误~未定义书签。 5.5 在线下载的实现 ......................................................错误~未定义书签。 5.6 水果连连看功能的实现 ..........................................错误~未定义书签。 5.7 音乐视频播放功能的实现 ......................................错误~未定义书签。 5.8 系统播放设置功能的实现 ......................................错误~未定义书签。 第6章 系统测试 ................................................错误~未定义书签。 6.1 功能模块测试 ..........................................................错误~未定义书签。 6.2 功能整体测试 ..........................................................错误~未定义书签。 5 第1章 绪论 随着计算机网络通信技术和Internet的飞速发展,基于因特网的手机移动应用已经开始成为一种全新的功能需求,并且越来越受到人们的关注。由于移动应用具有简单性,随时随地性等诸多特点,因此它有着传统计算机所无法比拟的优点。这样一来,手机移动应用的开发工作就显得尤为重要,开发出一个手机音乐播放器就更有必要了。 本文依据设计实现出的以SQLite数据库为例的手机音乐播放器,做了全面系统的介绍。全文共六章,按照前期的开发顺序,从系统分析与研究开始,逐一对开发过程做了全面的介绍。 第一章,介绍了课题的开发背景、课题开发的现实意义、音乐播放器的概念涵义以及预期达到的目标。 第二章,概略地介绍了开发音乐播放器多用到的各种技术,比如新技术Objective-c,SQLite数据库,开源框架的xml解析等。 第三章,对音乐播放器的系统结构设计、系统结构功能、运行环境等概要分析设计阶段做工了大体介绍即需求分析。 第四章,对系统总体流程设计、系统整体框架、后台逻辑处理功能设计和数据库设计作了简要说明。 第五章,具体介绍了系统各功能实现过程,如音乐播放界面的处理, 音乐信息的处理, 在线音乐搜索的处理,连连看游戏的处理等。 第六章,大体介绍了对本系统的测试工作,涵盖了测试 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 、测试结果以及测试分析这三个方面的内容。 6 1.1 课题开发背景 如今的移动应用开发产业让人眼花缭乱,主要的移动操作平台有:iOS(iPhoneOS)、Android、Nokia Symbian、BlackBerry、Java ME、Windows Phone、Flash/Flash Lite、mobile web(WAP/XHTML/CSS/Javascript)。Android以其开放性,多任务,大功能,画面流畅,硬件设备优良多样等各种优点,占智能机一大部分;然而它也存在着很明显的不足,如:兼容性差,各种机型的配置不一样,以至于开发的时候出现各种版本。有些产品华而不实,用户体验差。Symbian主要基于C语言的应用开发,支持多线程运行模式,但是开发代码量过大给开发人员造成很大的不便,另外塞班版本之间兼容性差也是SymbianOS需要改进的一个地方。就目前而言,三大平台(Android、Symbian、BlackBerry)的市场占有率也在逐渐下降,iOS呈现平稳上升趋势。 更重要的是无 1.App Store的支付模式成熟。不仅仅是商业模式的创新,法模仿,经过长时间的运营,App Store已经形成完备的支付模式,被大部分用户接受。 2.iOS是用Objective-C开发。从全球的编程语言排行榜来看,虽然,Objective-C只有苹果公司一家使用,但是已经排名第4,可见iOS开发的普及性和受欢迎程度,另外,基于C语言,运行效率更高。 苹果iPhone以及所有苹果的硬件软件策略和控制让苹果在用户体验和 3. 控制产品质量方面占尽先机,大部分iOS用户能够同时对他们手中的设备进行更新,这会吸引更多用户。 4.iPhone在中国极受欢迎。中国的各大移动运营商都积极地与苹果公司合作,各自推出适合中国人使用的手机套餐和应用,比如中国联通,中国电信等等,社会各界也对iPhone有很好的评价。 7 5.iOS在各国开发者中有很好的学习氛围,如facebook的three 20 iOS开源代码库,都是良好的学习资源。 1.2 音乐播放娱乐系统框架设计开发的现实意义 收听音乐越来越成为人们繁忙之余的轻松娱乐活动。市场上大多数手机播放系统,存在功能单一,下载时间长,画面不流畅,用户体验不好,浪费很多资源和时间,另外,由于音乐播放系统发展短,很多系统都没有规范化管理资源,资源分类混乱等。本系统紧跟当前移动手机开发趋势,基于iPhone平台的音乐播放系统。具有资源占用率小,运行效率高,操作简洁,扩展能力强等特点。 1.3 本系统预达到的目标 本系统紧跟当前移动手机开发趋势,使用Objective-c语言开发一个基于iOS平台的音乐播放娱乐系统,实现基于iOS平台的音乐播放娱乐系统的基本功能。歌的切换以及列表显示,在听歌的同时能够娱乐。 8 第2章 在线音乐播放系统开发技术简介 该部分主要包括对iOS系统架构的分析,核心操作系统的分析,应用程序框架的分析,内核的分析,开发环境的配置信息,选用数据库描述信息等,具体如下。 2.1 Objective-c简介 Objective-C是非常“实际”的于洋。它使用一个用C写成、很吊的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。ObjC写成的程序通常不会比其源代码大很多。而其函数库(通常附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。 C的最初版本冰不支持垃圾回收。在当时这是争论的焦点之 Objective- 一,很多人考虑到Smalltalk回收时有漫长的“死亡时间”,令整个系统失去功用。Objective-C为避免此问题才不拥有这个功能。虽然某些第三方版本已经加入这个功能(尤其是GNUstep),再起Mac OS X 10.3中仍未引入这个功能。不过令人欣慰的是在Apple发布的XCode4中已经支持自动释放,我不敢冒昧的说那是垃圾回收,因为两者机制不同,在xCode4中的自动释放,也就是ARC(Automatic Reference Counting)机制,是不需要用户手动去Release一个对象,而是在编译期间,编译器会自动帮你添加那些以前你经常写的[NSObject release]。 另一个问题是ObjC不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类别和函式均有“NS”作为前缀,例如NSO 9 bject或NSButton来清楚分别它们属于Mac OS X核心;使用“NS”是由于这些类别的名称在NeXTSTEP开发时定下。 虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。 和C++不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。 由于Obj-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用(syscalls)也如此),很多常见的编译时性能优化方法都不能应用于Obj-C(例如:内联函数、常数传播、交互式优化、纯量取代与聚集等)。这使得Obj-C性能劣于类似的对象抽象语言(如C++)。不过Obj-C拥护者认为既然Obj-C运行时消耗较大,Obj-C本来就不应应用于C++或Java常见的底层抽象 2.1.1 ios系统框架 iOS的系统架构和其操作系统一样,采用了分层的架构。iOS分为四层,分别为核心操作系统(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),Cocoa触摸架构层(the Cocoa Touch layer)。 2.1.2核心操作系统层和核心服务层 位于iOS系统架构最下面的一层是核心操作层,它包括内存管理,文件管理,电源管理以及一些其他的操作系统业务,它可以直接和硬件设备交互。核心操作系统层包括以下这些组件:OS X Kernel,Mach 3.0,BSD,Sockets,Power Mgmt,File System Keychain,Certificates,Security,Bonjour等。 10 开发人员也可以完全访问核心服务层来方问iOS的一些服务,包括数据库连接,URL学习等等,它主要包括以下这些组件:Collections,Address Book,Networking,File Access,SQLite,Core Location,Net Services,Threading,Preferences,URL Utilities等。 SQLite是嵌入式的和轻量级的sql数据库,广泛用于iOS应用。iOS系统内置SQLite数据库减小了开发人员的负担,是系统的一部分。 Net Servicer主要负责网络服务,在开发过程中,承担应用程序与服务器之间连接的角色,有很强的交互性。 媒体层,通过它可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。它包括以下这些组件:Core Audio,OpenGL,Audo Mixing,Audio Recording,Video Playback,JPG,PBG,TIFF,PDF,Quartz,Core Animation,OpenGL ES。最上面一层是可触摸层,这一层为应用开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。它包括以下这些组件:Multi-Touch Events,Core Motion,Camera,View Hierarchy,Localization,Alerts,Web Views,Image Picker,Multi-Touch Controls。 在Cocoa Touch层中的很多技术都是基于Objective-C语言的。Objective-C语言为iOS提供了相机集合,文件管理,网络操作等支持。例如UIKit框架,它为应用程序提供了各种可视化组件,窗口(window),视图(view)和按钮组件(UIButton)。Cocoa Touch层中的其他框架,对我们在应用程序中的开发来说也是非常有用的,如访问用户通信录功能框架,获取照片信息功能的框架,负责加速感应器和三维陀螺仪等硬件支持的框架等等。 11 2.1.3应用程序框架 编写应用程序项目,都是从Cocoa Touch层开始的,具体来说是从UIKit Framework开始的。iOS常用的SDK框架如下: AddressBook.framework 提供访问存储核心数据库中用户联系人信息的功能。 AddressBook.framework提供一个用户界面,用于显示存储在地址薄中的联系人详情。 AudioUnit.framework提供一个接口,让我们的应用程序可以对音频进行处理。 AudioToolbox.framework和AVFoundation.framework提供音频录制和回放的底层API,同时也负责管理音频硬件。 CFNetwork.framework访问和配置网络,像HTTP,FTP和Bonjour Services等。 CoreFoundation.framework提供抽象的常用数据类型,如Unicode、strings、XML、URL等。 CoreGraphics.framework提供2D绘制的基于C的API。 Foundation.framework提供Object-C的基础类(像NSObject)、基本数据类型和操作系统服务等。 GameKit.framework为游戏提供网络功能,点对点互联和游戏中的语音交流。 MapKit.framework为应用程序提供内嵌地图的接口。 MediaPlayer.framework提供视频播放和音频的功能。 MessageUI.framework提供视图控制接口用以处理E-mail和短信。 12 OpenGLES.framework提供简洁而高效的绘制2D和3D图形的OpenGL API。 QuartzCore.framework提供动画特效以及通过硬件进行渲染的能力。 StoreKit.framework为应用程序提供在程序运行中消费的支持。 SystemConfiguration.framework检测当前网络是否可用和硬件设备状态的能力。 2.2 SQLite数据库介绍 SQLite, 是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。 2.3 XCode Xcode 2.0 是开发人员建立 Mac OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径。Xcode 2.0 将 Mac OS X 的轻松使用,UNIX 能量以及高性能的开发技术集合在一起。 13 不管你用 C、C++、 Objective-C或 Java编写程序,在 AppleScript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现 Xcode 编译速度极快。每次操作都很快速和轻松。 Xcode 4 的虚拟模型和设计功能让你可以更轻松的开发和维护应用程序。只需选择应用程序中想要编写的部分,然后模型和设计系统将自动创建分类图表,不仅可以显示编码,还可以让你进行浏览。Mac OS X Core Data API 帮你的应用程序创建数据结构。更棒的是,它还自动提供撤消、重做和保存功能,无需编写任何编码。 Xcode 整合的 Apple Reference Library 为所有的Apple开发者文件提供一个单独的搜索和显示界面,这些文件包括来自苹果电脑公司网站的在线文件,以及存放在你电脑上的文件。新的参考资料库甚至可以帮你将定期更新资料下载到你的电脑,保持文件的最新状态。Xcode 将帮你快速找到最新的答案。 Xcode 4 的核心部分是苹果电脑公司下一代业界 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的 gcc 编译器gcc 4.0。新的编译器利用许多先进的最优化技术帮你从现存编码中获得更多性能。从超级计算世界借鉴来的自动向量化(Auto-vectorization)技术可以帮助你释放每台 Intel 系统中速度引擎的能量,而不需要编写向量化编码。其他的最优化工具则支持反馈定向的最优化,以及隐藏模块分析。 Xcode 将赋予你创建诸如计算和渲染引擎应用程序的能力,这些应用程序 14 使用64位内存定址。这非常适合数据集中的应用程序,其通过访问内存中的数据运行速度更快,远胜于磁盘访问。Xcode 将为你提供工具来建立并调试适合 Intel Core i5, i7 和 Mac OS X Lion 的 32 或 64 位应用程序,还可以让你创建包含32位和64位执行能力的 Fat Binaries。 众所周知,在构建中引进多重处理器可以提高速度,Xcode 能帮你实现这个明显的结论。利用支持 Rendezvous 的分布式构建功能,可以轻易地把编译工作量分散到闲置的电脑上来寄放构建,或者更好是在单独的电脑上开发一个专门的 Xserve 构建寄放区,快速处理那些耗时的任务。 15 第3章 在线音乐播放系统需求分析 根据第一章所定义的课题研究方向及目标,本章将对系统功能进行具体的需求分析,具体分析音乐播放娱乐系统所要实现的功能以及欲达到的效果。 3.1 在线音乐播放系统的可行性分析 1.使用Objective-C编程技术 Objective-C是C语言的面向对象扩展,可以将其称为“带有对象的C”。相对于其他面向对象语言,Objective-C更加容易学习。 (1)动态绑定 函数和消息的最根本不同是:函数和它的参数是在编译的时候已经确定下来,但是消息和接收对象知道程序已经在运行,消息在传递时才能确定下来。 同的方法名确切的消息方法实现依赖于消息的接收者,不同的接收者可能有相不同的方法实现,只有在消息接收时才能确定(动态类型),通过源代码的类型定义并不能完全确认接收者的类型。运行时消息例程查找接收者和消息方法,找到消息方法实现的机器码,呼叫这个方法,传递给它消息实例变量指针。 (2)多态性 在Objective-c中消息的调用看上去和标准C中的函数调用相似,但因为 ,消息的行为与函数调用还是不同。在一些情况下,一些对方法属于一个对象 象仅能对针对它涉及的方法起作用,不能被其他类的方法使用,即使这些类有同样名称的方法。这意味着两个对象对同样的消息有着不同的响应,即多态性。Objective-c中多态性和动态绑定配合使用,可以使代码提供给任意数量不同类型的对象使用,这些对象不需要再写代码的时候就已经定义好,它们可以是以后开发的对象,也可以是其他项目的对象。 16 (3)面向对象 面向对象程序构建在多种对象之上,基于Cocoa框架的程序可能使用NSMatrix对象、NSWindow对象、NSDirectonary对象、NSFont对象以及许多其它对象。在Objective-c中通过定义类来定义对象。面向对象让开发者更容易开发应用程序软件,以及更加规范化。 (4)继承性 类的定义是累进的,任一个新类都是在另一个类的基础上定义的,新类继承了它的方法和实例变量。继承使所有的类构成一颗树形的结构,在Objective-c中使用类一般要继承或间接继承于基类:NSObject,因为NSObject提供了大量的有用特性。比如,一些图形类,需要继承于Shape类,而Shape是Graphic类的子类,Graphic又继承于NSObject类,因此,还是间接继承于NSObject类。类的继承关系图3-1所示: NSObject Graphic Image Text Shape Circle Line Rectangle Square 图3-1 Objective-C类继承图 1.使用工具方面:开发环境为xcode 4.2。 17 2.操作系统方面:使用mac 10.8操作系统。 3.硬件可行性 一台已经安装有所有必备的软件及相应软件设备的计算机;内存要求大于或等于2G。 4.社会因素和市场因素可行性 如今社会发展迅速,每个人都不再满足于功能单一的音乐播放器,越来越多地倾向于娱乐性能完备的音乐播放系统。用户对在听音乐的同时还可以玩小游戏来更加的享受。 按照目前市场情形,越来越多的移动开发者涌进iOS开发领域。iOS平台上应用软件,App Store的支付模式更为成熟而且有监管,另外iOS的兼容性问题小,开发人员不用考虑太多的配置兼容问题,美观大方的外形,更是吸引了大量的用户。而且其良好的用户体验,都为iOS的发展奠定了良好的基础。该音乐播放系统,可以在听歌的同时玩本地小游戏,给用户极好的娱乐效果。 3.2 在线音乐系统功能需求分析 本系统是基于iOS平台开发的一款音乐播放娱乐系统,将要应用在iOS移动通讯设备上,能够尽可能的满足用户更方便更快捷的娱乐需求,对于一个音乐播放器听歌,首先能够播放本地音乐和在线搜索。用户可以在音乐的信息界面看到所有的音乐文件。 在享受歌曲的过程中,会让用户感觉枯燥无味。本系统自带的小游戏可以有效的避免用户等待,画面绚丽的推箱子,可以有效缓解疲劳。 选择下图为本系统的功能模块图:(如图3-2) 18 图3-2 功能模块图 3.2.1 功能需求 根据系统功能划分,本系统详细需求描述如 下: 1(音乐播放功能需求 为了给用户最好的用户体验,本功能模块实现mp3音乐文件的播放,歌曲的切换,音乐的暂停,音乐的开始,歌曲图片的显示,音量的调整,随意拖动滚动条来播放音乐等。 2(音乐播放列表功能需求 该模块实现的是音乐信息的管理,包括播放哪一个音乐, 本地音乐播放列表的显示,所有的音乐信息等等。 3(在线搜索音乐功能需求 该模块实现的是使用网络API来在线搜索音乐,还包括搜索结果的正确显 19 示等等。 4(在线音乐下载功能需求 该模块实现的是将通过网络API搜索到的音乐下载到本地,并显示下载列表。 5(音乐视频播放功能需求 该模块实现的是播放本地音乐视频的功能 6(水果连连看功能需求 本模块实现了水果连连看的玩法,仅使用了第一关,其中实现了无障碍消去水果的功能。 7(音乐播放系统设置的功能需求 本模块实现的是音乐播放的模式设置以及改变系统的主题功能 20 第4章 在线音乐播放系统设计 系统设计阶段主要的任务是系统各个模块的具体设计与实现 4.1 在线音乐播放系统总体架构设计 该系统七个模块, 分别为音乐播放界面,本地音乐播放列表界面,在线搜索 界面,在线下载界面,水果连连看游戏界面,音乐视频播放界面,音乐播放设 置界面。在线音乐播放系统总体流程图如图4.1所示 图4.1总体架构图 4.2 模块功能设计 下面以具体的效果来展示各个功能模块。 21 4.2.1 音乐播放功能模块 1实现mp3音乐文件的播放 2歌曲的切换 3音乐的暂停,音乐的开始 4歌曲图片的显示 5音量的调整 6随意拖动滚动条来播放音乐。 , 4.2.1-2所示。 音乐播放功能模块运行效果图如下4.2.1-1 图4.2.1-1音乐播放界面 22 图4.2.1-2音乐音量设置界面 4.2.2 音乐信息功能模块 1所有音乐播放列表的显示 2音乐的选择 运行效果图如下4.2.2-1所示。 23 图4.2.2-1音乐信息默认界面 4.2.3 在线搜索音乐功能模块 1按歌曲名进行搜索音乐 2把搜索结果正确显示到界面上 运行效果图如下4.2.3-1, 4.2.3-2 24 图4.2.3-1 在线搜索界面 图4.2.3-2 搜索我和你结果显示 25 4.2.4 在线下载功能模块 1实现了在线下载的功能 运行效果图如下4.2.4-1 4.2.4-2 图4.2.4-1 在线下载默认界面 26 图4.2.4-2 正在下载界面显示 4.2.5 水果连连看功能模块 1体现的本系统的实用性和娱乐性 运行效果图如下4.2.5-1 27 图4.2.5-1 水果连连看显示 4.2.6 音乐视频功能模块 1.实现了音乐视频的播放 运行效果图如下4.2.6-1, 4.2.6-2 28 图4.2.6-1 音乐视频显示 图4.2.6-1 音乐视频全屏显示 29 4.2.7 音乐播放设置功能模块 1实现了系统播放设置功能 运行效果图如下4.2.7-1, 4.2.7-2 ,4.2.7-3 图4.2.7-1 播放设置默认界面 30 图4.2.7-2 播放模设置式界面 图4.2.7-2 更改系统主题界面 31 第5章 在线音乐播放系统实现 根据设计阶段的工作成果系统各个功能模块实现的效果是比较理想的。下面是各个功能模块的实现。 5.1 系统初始化的实现 在系统的开始,需要实现一个定制的UITabBarController的控件,并且每个UITableBarItem都关联相对应的模块,这是系统初始化 核心代码如下: -(void)createTabBarController { 创建可变数组 // NSMutableArray * tabArray = [[NSMutableArray alloc]initWithCapacity:0]; //创建分栏控制器 UITabBarController * tabCtrl = [[UITabBarController alloc]init]; [tabCtrl.tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_bg.png"]]; //1:我的音乐 MyMusicViewController * myLocal = [[MyMusicViewController alloc]initWithTitle:@"本地榜单" navTitle:@"本地榜单" tabImageName:@"local"]; //创建导航控制器 UINavigationController * navLocal = [[UINavigationController alloc]initWithRootViewController:myLocal]; 32 [navLocal.navigationBar setBackgroundImage:[UIImage imageNamed:@"tabbar_bg"] forBarMetrics:UIBarMetricsDefault]; //添加到数组中 [tabArray addObject:navLocal]; //2:当前播放 CurrentPlayViewController * current = [[CurrentPlayViewController alloc]initWithTitle:@"当前播放" navTitle:@"当前播放" tabImageName:@"current.png"]; //创建导航控制器 UINavigationController * navCurrent = [[UINavigationController alloc]initWithRootViewController:current]; [navCurrent.navigationBar setBackgroundImage:[UIImage imageNamed:@"tabbar_bg"] forBarMetrics:UIBarMetricsDefault]; //添加到数组中 [tabArray addObject:navCurrent]; //3:在线音乐 OnLineMusicViewController * onLine = [[OnLineMusicViewController alloc]initWithTitle:@"在线音乐" navTitle:@"在线音乐" tabImageName:@"online.png"]; //创建导航控制器 UINavigationController * navOnline = [[UINavigationController alloc]initWithRootViewController:onLine]; 33 [navOnline.navigationBar setBackgroundImage:[UIImage imageNamed:@"tabbar_bg"] forBarMetrics:UIBarMetricsDefault]; //添加到数组中 [tabArray addObject:navOnline]; //4:正在下载列表 DownLoadingViewController * downLoad = [[DownLoadingViewController alloc]initWithTitle:@"正在下载" navTitle:@"正在下载" tabImageName:@"download.png"]; //创建导航控制器 UINavigationController * navDownLoad = [[UINavigationController alloc]initWithRootViewController:downLoad]; [navDownLoad.navigationBar setBackgroundImage:[UIImage imageNamed:@"tabbar_bg"] forBarMetrics:UIBarMetricsDefault]; //添加到数组 [tabArray addObject:navDownLoad]; //系统菜单 SysteMenu * menu = [[SysteMenu alloc]initWithTitle:@"系统菜单" navTitle:@"系统菜单" tabImageName:@"setting.png"]; UINavigationController * navMenu = [[UINavigationController alloc]initWithRootViewController:menu]; [navMenu.navigationBar setBackgroundImage:[UIImage imageNamed:@"tabbar_bg"] forBarMetrics:UIBarMetricsDefault]; 34 [tabArray addObject:navMenu]; [menu release], tabCtrl.viewControllers = tabArray; self.window.rootViewController = tabCtrl; [navOnline release]; [onLine release]; [navDownLoad release]; [downLoad release]; [navCurrent release]; [current release]; [navLocal release]; [myLocal release]; [tabCtrl release]; [tabArray release]; } 在下面的函数中调用该函数即可实现该功能. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. //调用创建分栏控制器函数 35 [self createTabBarController]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; } 5.2 音乐播放的实现 使用了iphone中一个API AVAudioPlayer 来实现了音乐的播放,切换,拖动播放,另外界面上能调整音量,快进等。 主要代码如下 //播放音乐 (void)playMusicWithSongName:(NSString *)name - { [self playlrc]; NSLog(@"name=%@",name); namelabel.text = name; //首先到NSBudle里面找,如果没找到就到本地Documents里面找 NSString * path = [[NSBundle mainBundle]pathForResource:name ofType:@"mp3"]; NSString * headImagePath = [[NSBundle mainBundle]pathForResource:name ofType:@"png"]; NSLog(@"-----headimage=%@",headImagePath); 36 if (path.length >0) { //在资源里面找到音乐 NSURL * musicFile = [NSURL fileURLWithPath:path]; //NSLog(@"musicFile = %@",musicFile); //创建音乐播放实例 musicPlayer.delegate = nil; [musicPlayer release]; musicPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:musicFile error:nil]; musicPlayer.delegate = self; //可以得到波形 [musicPlayer setMeteringEnabled:YES]; //准备播放 [musicPlayer prepareToPlay]; //播放音乐 [musicPlayer play]; if (headImagePath.length>0) { NSData * data = [NSData dataWithContentsOfFile:headImagePath]; //NSURL * headImageUrl=[NSURL URLWithString:headImagePath]; UIImage * image = [UIImage imageWithData:data]; 37 headImage.image = image; } } else { //到Documents里面去找 NSString * path1 = [NSHomeDirectory() stringByAppendingPathComponent:@"Document/Music"]; path = [NSString stringWithFormat:@"%@/%@.mp3",path1,name]; NSURL * musicFile = [NSURL fileURLWithPath:path]; //创建音乐播放器实例 release]; [musicPlayer musicPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:musicFile error:nil]; //可以得到波形 [musicPlayer setMeteringEnabled:YES]; [musicPlayer prepareToPlay]; play]; [musicPlayer } } 5.3 音乐播放列表的实现 通过iphone自带的控件UITableView,将歌曲列表展现在cell上,点击 38 播放使用的代理模式进行回调。 主要代码如下 -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:YES]; NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Music"]; NSLog(@"CCC=%@",path); //创建文件管理实例 NSFileManager * fm = [NSFileManager defaultManager]; //subpathsAtPath获得路径下的所有子文件,也就是歌名 * array = [fm subpathsAtPath:path]; NSArray for (NSString *name in array) { if ([name hasSuffix:@".mp3"]) { NSLog(@"s = %@",name); NSArray *songName = [name componentsSeparatedByString:@"."]; ([songName count] > 0) { if NSString *song = [songName objectAtIndex:0]; if (![[musicDict allValues] containsObject:song]) { //存进字典 [musicDict setObject:song forKey:[NSString stringWithFormat:@"%i",[musicDict allKeys].count]]; 39 } } } } NSLog(@"dict is %@", musicDict); [[DownloadManager sharedDownloadManager].musicDictionary release]; [DownloadManager sharedDownloadManager].musicDictionary = [[NSMutableDictionary alloc] initWithDictionary:musicDict]; [mTableView reloadData]; } //给每个cell数据 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { MyMusicCell * cell = [tableView dequeueReusableCellWithIdentifier:@"ID"]; if (cell == nil) { cell = [[MyMusicCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ID"]; cell.selectionStyle = UITableViewCellSelectionStyleNone; } NSString * text = [musicDict objectForKey:[NSString stringWithFormat:@"%i",indexPath.section]]; 40 cell.mSongName.text = text; //加上小箭头 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //加载图片,首先在资源文件里面查找,如果没有找到,就到本地查找,如果还是没有,就加载默认图片 UIImage * image = nil; NSString * mPath = [[NSBundle mainBundle]pathForResource:text ofType:@"png"]; if (mPath.length !=0) { image = [UIImage imageWithContentsOfFile:mPath]; cell.mHeadImage.image = image; cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.backgroundColor = [UIColor clearColor]; return cell; } else { NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Music"]; mPath = [NSString stringWithFormat:@"%@/%@.png",path,[musicDict objectForKey:[NSString stringWithFormat:@"%i",indexPath.section]]]; image = [UIImage imageWithContentsOfFile:mPath]; 41 if (image) { cell.mHeadImage.image = image; cell.backgroundColor = [UIColor clearColor]; } else { cell.mHeadImage.image=[UIImage imageNamed:@"huaban.jpeg"]; cell.backgroundColor = [UIColor clearColor]; } } return cell; } 5.4 在线搜索音乐的实现 使用网络API 通过歌曲名搜索,然后将结果展现在每个cell上,使用了MVC设 计模式。 主要代码如下 -(void)loadData { if (searchWord.length <=0) { 42 return ; } //下载歌词 NSString * myURL = [[NSString stringWithFormat:@";/%@",searchWord]stringByAddingPerce ntEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"geciurl = %@",myURL); NSURL * url = [NSURL URLWithString:myURL]; // NSLog(@"geciurl = %@",url); ASIHTTPRequest * request = [ASIHTTPRequest requestWithURL:url]; //启动异步下载 [request startAsynchronous]; [request setFailedBlock:^(void) { NSLog(@"请求数据失败!"); }]; //请求数据成功的话 [request setCompletionBlock:^(void){ SBJsonParser * sbjp = [[[SBJsonParser alloc]init]autorelease]; NSError * error = nil; NSDictionary * dic = [sbjp objectWithString:[request responseString] error:&error]; //解析数据 43 if ([dic isKindOfClass:[NSDictionary class]]) { //获得歌手所有数据 NSArray * entryarray = [dic objectForKey:@"result"]; if ([entryarray isKindOfClass:[NSArray class]]&&[entryarray count]>0) { //搜索到歌曲 for (NSDictionary * dict in entryarray) { Music * mc = [[Music alloc]init]; mc.lrcUrl = [dict objectForKey:@"lrc"]; mc.authorName = [dict objectForKey:@"artist"]; mc.musicName = [dict objectForKey:@"song"]; mc.authorImageUrl = [NSString stringWithFormat:@";/%@",[dict objectForKey:@"aid"]]; BOOL isExit = NO; //如果这首歌已经存在就跳出 for (Music * music in mDataArray) { if ([music.authorName isEqualToString:mc.authorName]) { 44 isExit = YES; break; } } if (!isExit) { [mDataArray addObject:mc]; } [mc release]; } } } [tableView reloadData]; }]; } 5.5 在线下载的实现 主要代码如下 -(void)addRequest:(Music *)music { //缓存路径 NSString *temppath = [NSString stringWithFormat:@"%@/%@ - %@",[NSHomeDirectory() 45 stringByAppendingPathComponent:@"Documents/Music"],music.musicName,music.authorName]; //歌曲存放路径 NSString *savePath = [NSString stringWithFormat:@"%@/%@ - %@.mp3",[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Music"],music.musicName,music.authorName]; //歌词存放路径 NSString *lrcPath = [NSString stringWithFormat:@"%@/%@ - %@.txt",[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Music"],music.musicName,music.authorName]; //下载歌词 ASIHTTPRequest * lrcRequest = [[ASIHTTPRequest alloc]initWithURL:[NSURL URLWithString:music.lrcUrl]]; //下载歌曲 * request = [[ASIHTTPRequest alloc]initWithURL:[NSURL ASIHTTPRequest URLWithString:music.songURL]]; //设置为可以断点续传,下次运行可以继续下砸 [request setAllowResumeForFileDownloads:YES]; //设置缓存位置 46 [request setTemporaryFileDownloadPath:temppath]; //设置歌曲下载位置 [request setDownloadDestinationPath:savePath]; //设置歌词下载位置 [lrcRequest setDownloadDestinationPath:lrcPath]; NSDictionary * userInfo = [NSDictionary dictionaryWithObject:music.authorImageUrl forKey:@"info"]; //设置用户信息 [request setUserInfo:userInfo]; request.delegate =self; //把下载请求添加到异步下载队列中 [_queue addOperation:request]; [_queue addOperation:lrcRequest]; [request release]; } //暂停当前的下载 -(void)pause:(Music *)music { for (ASIHTTPRequest * request in [_queue operations]) { //查看userinfo信息 47 NSString * url = [request.userInfo objectForKey:@"info"]; //判断id是否匹配,若匹配就暂停匹配的对象 if ([music.authorImageUrl isEqualToString:url]) { //把请求的代理设为空 是进度条暂停 [request setDownloadProgressDelegate:nil]; //清除多有的代理和块 然后取消请求 [request clearDelegatesAndCancel]; } } } //更新进度条 -(void)updateProgress:(DownLoadCell *)cell music:(Music *)music { for (ASIHTTPRequest * request in [_queue operations]) { NSString * url = [request.userInfo objectForKey:@"info"]; if ([music.authorImageUrl isEqualToString:url]) { [request setDownloadProgressDelegate:cell]; } } } 48 5.6 水果连连看功能的实现 实现了水果连连看简单的一关,体现了本系统的实用性和娱乐性. 主要代码如下 #pragma mark - selector Methods; //此方法用来触发当点击到水果时的方法。 -(void)buttonClicked:(UIButton *)sender { //首先判断这是第几次点击,如果是第一次则将水果的基本情况记录下来, 如果是第二次,则判断跟上一次的是不是 //同一个水果,如果是的话,根据连连看的规则,判断两者之间能不能走通, 若能走通则消掉。 //先判断两个水果是不是同一个。 //先判断是不是第一次点击 if (_currentButton == nil) { //第一次点击 _currentButton = sender; _currentButton.backgroundColor = [UIColor greenColor]; } else { _lastButton = _currentButton; _currentButton = sender; 49 if ([_currentButton.currentBackgroundImage isEqual:_lastButton.currentBackgroundImage]) { //判断这次跟上次点击的是不是同一种水果。如果是, //根据连连看的规则,判断两者之间是不是能走通。 UIButton *firstButton; UIButton *secondButton; if (_lastButton.tag < _currentButton.tag) { //在这里限定通过tag值小的到tag值大的找路径。省掉一半的工作量。 firstButton = _lastButton; secondButton = _currentButton; } else { firstButton = _currentButton; secondButton = _lastButton; } if ([self canPassFromLastButton:firstButton ToCurrentButton:secondButton]) { //本游戏最关键点在于这个函数。 //在这里要根据tag值得到两点击点的坐标。 int x1 = [self getXFromButtonTag:_lastButton.tag]; 50 int y1 = [self getYFromButtonTag:_lastButton.tag];//第一个点的横纵坐标。 int x2 = [self getXFromButtonTag:_currentButton.tag]; int y2 = [self getYFromButtonTag:_currentButton.tag];//第二个点的横纵坐标。 map[y1][x1] = 0; map[y2][x2] = 0; [_lastButton removeFromSuperview]; [_currentButton removeFromSuperview]; _lastButton = nil; _currentButton = nil; } else { _lastButton.backgroundColor = [UIColor clearColor]; _lastButton = nil; _currentButton.backgroundColor = [UIColor greenColor]; } } else { //如果不是, _lastButton.backgroundColor = [UIColor clearColor]; 51 _lastButton = nil; _currentButton.backgroundColor = [UIColor greenColor]; //到这里比较简单,应该能看懂。 } } if (self.view.subviews.count ==0) { UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"恭喜" message:@"您已赢得游戏!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; [alert release]; } } 5.7 音乐视频播放功能的实现 实现了音乐视频的播放给用户一种不一样的音乐体验 主要代码如下 - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"音乐视频"; UIImage * img = [UIImage imageNamed:@"background.png"]; 52 UIImageView * image = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; image.image = img; [self.view addSubview:image]; [image release]; UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(100, 100, 70, 35); [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"bsm" ofType:@"mp4"]]]; player.view.frame = CGRectMake(0, 0, 320, 370); player.backgroundView.backgroundColor = [UIColor clearColor]; [self.view addSubview:player.view]; [player setShouldAutoplay:NO]; [player play]; [player pause]; } 53 5.8 系统播放设置功能的实现 主要代码如下 //单曲循环 -(void)singleMusicCircle { NSDictionary * dict = [NSDictionary dictionaryWithObject:@"1" forKey:@"info"]; [[NSNotificationCenter defaultCenter]postNotificationName:@"changePlayMode" object:nil userInfo:dict]; } //顺序播放全部 -(void)allMusicCircle { NSLog(@"播放全部"); NSDictiona‎‎ry * dict = [NSDictionary dictionaryWithObject:@"2" forKey:@"info"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"changePlayMode" object:nil userInfo:dict]; } //随即播放 -(void)randMusicCircle { 54 NSDictionary * dict = [NSDictionary dictionaryWithObject:@"3" forKey:@"info"]; [[NSNotificationCenter defaultCenter]postNotificationName:@"changePlayMode" object:nil userInfo:dict]; } //换背景色 -(void)changeColor:(id)sender { //给所有controller发送广播 NSString * bcastName = @"ChangeTheme"; //内容 UIColor * color = [UIColor redColor]; NSDictionary * dict = [NSDictionary dictionaryWithObjectsAndKeys:color,@"ThemeColor", nil]; NSNotificationCenter * nc= [NSNotificationCenter defaultCenter]; [nc postNotificationName:bcastName object:self userInfo:dict]; } 55 第6章 系统测试 系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析系统设计和实施的最后复查。根据测试的概念和目的,在进行信息系统测试。 6.1 功能模块测试 在音乐播放模块,测试音乐播放是否流畅,是否能正常切换歌曲,是否能够快进歌曲播放,是否能调整音量等。 在音乐信息模块,测试是否能展现音乐信息列表,点击某个音乐是否能播放。 在在线搜索音乐模块,在有网络的情况下, 测试是否能正常搜索。 在在线下载模块,再有网络的情况下, 测试是否能正常下载。 在水果连连看游戏模块,测试是否能正常消去水果, 测试是否能够无障碍消 56 去。 在音乐视频功能模块,测试是否能正常播放,是否能够全屏播放,是否能够快进播放。 在音乐播放设置模块,测试是否能够单曲循环,顺序播放,随机播放, 测试是否能够更改主题。 在完成逐个模块测试后,开始对系统进行验收测试,运行该系统,在运行过程中查找出现的错误。 6.2 功能整体测试 在安装好配置环境的电脑上测试,刚开始出现屏幕混乱,经过反复修改,现在已经能正常播放音乐,切换音乐等。用xcode上自动检测内存工具,检测出多处内存泄露问题,都已经修改。最后,经过反复测试,修改,基本功能完全实现。 57 全文 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 经过一段时间的忙碌,终于把毕业设计的任务完成了。现在我对该系统做一下总结。 本系统的开发目标,主要是为了提供网络教学平台,此平台的框架设计有提供了一个教学网站的模板。设计经过紧张而有序的系统开发,收获颇丰,感触颇深。现在对经验收获、教训反思两大部分总结如下: 经验收获: 1(编写程序前,对已完成设计构思的系统进行主次分析,排好功能实现顺序,列出程序编、写步骤,对于理清编程思路很有帮助。人的逻辑思维可能很发达,在设计当中可以不用笔记,在脑中就能想好三到五个功能的逻辑关系 58 和编写步骤。但以后我们面对的是一个庞大的系统,大系统下分多个子系统,子系统下分多个功能模块,功能模块下分多个功能页面,功能页面下分多个子功能,而且子系统、功能模块、功能页面、子功能之间的逻辑关系构成了一张复杂庞大的逻辑关系网。这就需要我们在原先做好的设计流程图上,系统规划,全面分析,逐步细化,反复斟酌、推敲,然后列出编程计划。 2(善于借鉴他人的成果,实现自己的功能,可以有效地缩短开发时间,提高工作效率,是快速提高编程能力的最佳途径。借鉴他人的劳动成果并不是简单地拷贝别人的源代码,如果只是这样的话,你会因为系统经常的报错,却束手无策,最后将其认为是鸡肋而抱怨连天。应该是先要分析读透他人的程序思想,取其精华,去其糟粕,使之成为自己的思想,然后将这些功能块与自己的功能块融合。 3(在完成这个课题的过程中,遇到了很多问题。对于iOS的开发过程更是头疼,因为在iOS中有些控件必须接收 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,而且不用手动调用协议中的方法,系统自己调用,比如:UITableView。这个让我感觉很不可思议,以至于每次非得手动调用协议,但是每次都出错,后来就记住这个问题了。 在别人的帮助下,建立一个AutoreleasePool对象,负责清理里面的内存又不会过早释放内存,而且在创建View时添加autorelease方法,会在调用这个view结束后释放内存,解决了内存过早释放引起的画面不流畅问题。 4(每编完一个功能,应及时与其它完成功能一起测试,运行无误后,方可进行下一步开发。这样做是为了在测试时如果出错能很方便地找到出错的环节和病因所在,我们称之为“step by step”(一步一脚印),对于一个初级的程序开发者来说是很有帮助的。对于编程人员来说每一个环节都是来不得有半点差错的,每一个功能都是环环相扣,相互关联,相互作用的。 59 教训反思: (1)(学习与实践的结合不当。当我进行程序开发的时候,发现以前学习的知识点到用时却忘得一干二净了,也只好重新学习基本知识了。如果以前把知识学得透彻点,理解深刻点,也许在开发过程中可以缩短时间,提高效率。反思自我,归其原因:不是当时的学习不够认真,而是缺乏对知识点的运用实践;对于像我这样“半路出家”的编程人员来说,只是理解知识点是远远不够的,如果当时没有经过编译、运行、调试的过程,很快就会忘记的。 (2)(学习目标不专一。我们都知道在学习的时候是最忌讳这个还没学明白就去学那个的,结果当然是哪个也没学明白。这个没学好,就想用另一个,造成学习不深入,学习效果不好。以后一点要记住此教训。 参考文献 [1] Dave Mak(美) Jack Nutting(美) Jeff LaMarche(美)著.杨越 孙文磊等译.ios5基 础教程[M].北京:人民邮电出版社. 2013:3 [2] Mark Dalrymple(美) Scott Knaster(美)著.杨越 等译.Objective-C基础教程[M].北 京:人民邮电出版社. 2012:7 [3] Stephen G.Kochan 著.林翼 范俊 朱奕欣 译.Objective-C程序设计(第四版)[M].北 京:电子工业出版社,2012:12 [4] 虞斌著. Ios软件开发揭秘:iPhone&iPad企业应用和游戏开发[M].北京:电子工业出 版社,2011:1. [5] 克莱尔(美)著.李强译.Objective-C2.0Mac和ios开发实践指南[M].北京:机械工业 60 出版社,2011:1. [6] Brian W.Kernighan ,Deninis M Rirchie(美)著,徐宝文,李志(译)The C Programmin g Language[M].北京:机械工业出版社2003:2. [7] 徐松林,黄猛著.cocos2D-x手机游戏开发[M].北京:人民邮电出版社. [8] Ron patton(美)著.王钰,曹跃译.软件测试[M].北京:机械工业出版社,2006:4. [9] 王水著.软件工程[M].河南:河南科学技术出版社,2008:8. [10] 吴洁明著.软件工程实例教程[M].北京:清华大学出版社,2010:11. [11] 郭东恩著.数据库原理及应用[M].河南:河南科学技术出版社,2008:4. [12] Dan Pilone著.Head First iPhone Development[M].北京:东南大学出版社,2012: 1. [13] 萨丹著.iPhone开发秘籍[M].北京:人民邮电出版社,2010:1. [14] 乔纳森(美)著.AppStore掘金[M].北京:人民邮电出版社,2010:1. [15] 哈灵顿(美)著.iOS 4实战[M].北京:人民邮电出版社,2012:1. [16] 王志刚.编著应用程序开发攻略之iPhone特色传感器应用[M].北京:电子工业出版 社,2011:2. [17] Gene Backlin(美)著.岳红 凌冲译.iPhone&iPad高级编程[M].北京:清华大学出版 社,2012:1. [18] Wei-Meng Lee(美)著.张龙译.IOS 4编程入门经典[M].北京:清华大学出版社, 2012:1. 61 谢 辞 在本论文的写作过程中,我的导师**老师倾注了大量的心血,从选题到开题 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 ,从写作提纲,到一遍又一遍地指出每稿中的具体问题,严格把关,循循善诱,在此我表示衷心感谢,谢谢**老师在我撰写论文的过程中给与我的极大地帮助 同时我要感谢学院的各位老师、同学和朋友。在整个的论文写作中,各位老师、同学和朋友积极的帮助我查资料和提供有利于论文写作的建议和意见,在他们的帮助下,论文得以不断的完善,最终帮助我完整的写完了整个论文 另外,要感谢在大学期间所有传授我知识的老师,是你们的悉心教导使我有了良好的专业课知识 ,感谢这四年来信控学院对我的栽培,使我成为了一名合格的信控学子 62
本文档为【iOS音乐播放器-毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_105949
暂无简介~
格式:doc
大小:369KB
软件:Word
页数:60
分类:企业经营
上传时间:2018-04-03
浏览量:21