已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JIUJIANGUNIVERSITY毕业论文题目IOS音乐播放器英文题目IOSMUSICPLAYER院系信息科学与技术学院专业计算机科学与技术姓名吴传东班级学号A111146指导教师杨潇二一五年五月信息科学与技术学院学士学位论文1目录目录1摘要3ABSTRACT41绪论511课题来源及研究背景512开发目的及意义513课题研究内容514论文的组织与结构62相关技术概述721系统架构及开发环境简介722音乐播放器应用控件及组件介绍723音乐播放器的生命周期924音乐播放器应用技术的介绍1025本章小结103需求与分析1131可行性需求分析1132UI需求分析1333功能需求分析1434存储操作需求分析1535本章小结16信息科学与技术学院学士学位论文24系统设计1841UI设计1842功能设计1843存储操作2044本章小结215系统实现2351UI实现2352功能实现2353存储操作实现2654本章小结276软件测试2961兼容性测试2962功能测试3063本章小结337总结与展望3471总结3472展望34致谢35参考文献36信息科学与技术学院学士学位论文3摘要针对IOS系统上的一款音乐播放器程序进行设计与实现讨论。该音乐播放器实现了上一首,下一首,音量调节,歌词同步,播放模式的切换,快进快退等基本功能,还实现了对网络歌曲的分类获取及在线实时播放。目前苹果手机大热,在全世界火热销售,年轻人以拥有一台属于自己的苹果手机为傲。在这个大环境下学习苹果软件开发,是年轻人非常不错的选择。所以开发一款音乐播放软件非常具有市场前景。这款音乐软件中有我完成了系统设计,系统架构,UI界面设计,以及最后的软件测试等工作。关键词IOSOBJECTC音乐播放器信息科学与技术学院学士学位论文4ABSTRACTAGAINSTTHETHEMUSICPLAYERPROGRAMINTHESYSTEMOFIOSCARRIEDOUTTHEDESIGNANDIMPLEMENTATIONOFDISCUSSTHEBASICFUNCTIONSOFTHESWITCHTOPLAYBACKMODE,FASTFORWARDANDREWIND,BUTALSOTOACHIEVETHECLASSIFICATIONOFTHESONGSONTHENETWORKACCESSANDONLINEREALTIMEPLAYBACKTHEAPPLEMOBILEPHONE,HOTSELLALLOVERTHEWORLD,YOUNGPEOPLETOHAVEAPROUDOFTHEIROWNIPHONESINTHISENVIRONMENTLEARNINGAPPLESOFTWAREDEVELOPMENT,ISAYOUNGMANISVERYGOODCHOICESOIDEVELOPEDTHISKINDOFMUSICPLAYERSOFTWAREHAVEIDONEINTHISMUSICSOFTWARESYSTEMDESIGN,SYSTEMARCHITECTURE,UIINTERFACEDESIGN,ANDTHEFINALSOFTWARETESTING,ETCKEYWORDSTHEIOSOBJECTCMUSICPLAYER信息科学与技术学院学士学位论文51绪论11课题来源及研究背景当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三大手机操作系统,WINDOWSPHONE,ANDROID,以及IOS操作系统,其中IOS系统有很大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢,本文的音乐播放器就是基于IOS手机平台的播放器。12开发目的及意义现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一。随着人们的生活水平越来越高,人们对音乐的需求也越来越高,而传统的音乐播放器又限于手机内存,在音乐的分类和管理上有着很大的局限性。本设计的实现的是对音乐能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。添加了对网络音乐的支持,使得手机只需要联网就会瞬间拥有百万首歌曲,不必在局限于手机内存。丰富的歌曲分类功能,使得繁多网络歌曲的管理,更加的仅仅有条。这样就打破的传统播放器内存的限制,是人们能够享受到更加丰富的歌曲。本项目是一款基于IOS手机平台的音乐播放器,使IOS手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练IOS的技术和其它在市场上的特点。13课题研究内容本系统紧跟当前移动手机开发趋势,使用OBJECTIVEC语言开发一个基于IOS平台的音乐播放娱乐系统,实现基于IOS平台的音乐播放娱乐系统的基本信息科学与技术学院学士学位论文6功能。歌的切换以及列表显示,在听歌的同时能够娱乐14论文的组织与结构第一章为绪论,介绍了本文的选题背景和意义,总结国内外音乐播放器研究现状,同时对论文研究内容安排进行阐述。第二章对系统中涉及的相关理论和关键技术进行了研究,对OBJECTIVEC开发语言、IPHONE手机系统和MACOS相关技术进行了介绍和分析。第三章对系统进行研究,阐述了系统的功能和性能和UI界面的设计和实现。第四章在前面三章基础上研发出IPHONE的音乐播放软件,同时,对系统各模块设计和实现进行分析,其中对关键技术给出了详细实现过程。最后是论文的总结。信息科学与技术学院学士学位论文72相关技术概述21系统架构及开发环境简介开发IOS软件需要使用苹果官方发布的XCODE工具软件,XCODE软件目前已更新到第6版本,是一款相当强大的开发工具。使用XCODE我们将按图21来实现播放器的功能。图21播放器功能图22音乐播放器应用控件及组件介绍开发IOS软件使用OC语言,并使用苹果公司所开发集成的XCODE软件,开发音乐播放器需使用到下列方法。用户基本操作播放暂停上一首下一首快进快退播放模式单曲循环顺序播放随机播放信息科学与技术学院学士学位论文8SYSTEMSOUNDSERVICESSYSTEMSOUNDSERVICES是最底层也是最简单的声音播放服务,调用AUDIOSERVICESPLAYSYSTEMSOUND这个方法就可以播放一些简单的音频文件,使用此方法只适合播放一些很小的提示或者警告音,因为它有很多限制如声音长度要小于30秒、INLINEARPCM或者IMA4IMA/ADPCM格式的打包成CAF,AIF,或者WAV的文件、不能控制播放的进度、调用方法后立即播放声音、没有循环播放和立体声控制,另外,它还可以调用系统的震动功能,方法也很简单。具体的代码可以参考官方的示例SYSSOUND,但是官方的示例只有一些简单的用法,从文档中我们发现可以通过AUDIOSERVICESADDSYSTEMSOUNDCOMPLETION方法为音频播放添加CALLBACK函数,有了CALLBACK函数我们可以解决不少问题,比如可以克服SYSTEMSOUNDSERVICES本身不支持循环播放的问题。AVAUDIOPLAYER类AVAUDIOPLAYER是AVFOUNDATIONFRAMEWORK中定义的一个类,所以使用要先在工程中引入AVFOUNDATIONFRAMEWORK。我们可以把AVAUDIOPLAYER看作是一个高级的播放器,它支持广泛的音频格式,主要是以下这些格式AAC、AMRADAPTIVEMULTIRATE,AFORMATFORSPEECH、ALACAPPLELOSSLESS、ILBCINTERNETLOWBITRATECODEC,ANOTHERFORMATFORSPEECH、IMA4IMA/ADPCM、LINEARPCMUNCOMPRESSED、LAWANDALAW、MP3MPEG1AUDIOLAYER3。AUDIOQUEUESERVICES如果以上两种音频播放的解决方案都无法满足你的需求,那么我想你肯定需要使用AUDIOQUEUESERVICES。使用AUDIOQUEUESERVICES对音频进行播放,你可以完全实现对声音的控制。例如,你可以在声音数据从文件读到内存缓冲区后对声音进行一定处理再进行播放,从而实现对音频的快速/慢速播放的功能。信息科学与技术学院学士学位论文9MPMUSICPLAYERCONTROLLER有两种播放器可以选择,一种是APPLICATIONMUSICPLAYER,另外一种是IPODMUSICPLAYER。第一种播放器是一种内部播放器,当程序对出后停止播放;而第二种播放器则与IPOD播放器内的信息相关,退出之后不会停止播放。在播放之前需要设置队列。MPMOVIEPLAYERCONTROLLERMPMOVIEPLAYERCONTROLLER与AVAUDIOPLAYER有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMOVIEPLAYERCONTROLLER可以直接通过远程URL初始化,而AVAUDIOPLAYER则不可以。不过大体上用起来感觉差不多。格式支持MOV、MP4、M4V、与3GP等格式,还支持多种音频格式23音乐播放器的生命周期音乐播放器行业市场供给分析及市场供给预测包括现在音乐播放器行业市场供给量估计量和预测未来音乐播放器行业市场的供给能力。音乐播放器行业市场需求分析及音乐播放器行业市场需求预测包括现在音乐播放器行业市场需求量估计和预测音乐播放器行业未来市场容量及产品竞争能力。通常采用调查分析法、统计分析法和相关分析预测法。音乐播放器行业市场需求层次和各类地区市场需求量分析即根据各市场特点、人口分布、经济收入、消费习惯、行政区划、畅销牌号、生产性消费等,确定不同地区、不同消费者及用户的需要量以及运输和销售费用。音乐播放器行业市场竞争格局包括市场主要竞争主体分析,各竞争主体在市场上的地位,以及行业采取的主要竞争手段等;估计音乐播放器行业产品生命周期及可销售时间即预测市场需要的时间,使生产及分配等活动与市场需要量作最适当的配合。通过市场分析可确定产品的未来需求量、品种及持续时间;产品销路及竞争能力;产品规格品种变化及更新;产品需求量的地区分布等。音乐播放器行业市场分析报告可为客户正确制定营销策略或投资策略提供信息支持。信息科学与技术学院学士学位论文10企业的营销策略决策或投资策略决策只有建立在扎实的市场分析的基础上,只有在对影响需求的外部因素和影响购、产、销的内部因素充分了解和掌握以后,才能减少失误,提高决策的科学性和正确性,从而将经营风险降到最低限度。24音乐播放器应用技术的介绍OBJECTIVEC是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。OBJECTIVEC写成的程序通常不会比其原始码大很多。而其函式库通常没附在软件发行本亦和SMALLTALK系统要使用极大的内存来开启一个窗口的情况相反。因此,OBJECTIVEC它完全兼容标准C语言(C对C语言的兼容仅在于大部分语法上,而在ABI(APPLICATIONBINARYINTERFACE)上,还需要使用EXTERN“C“这种显式声明来与C函数进行兼容),而在此基础上增加了面向对象编程语言的特性以及SMALLTALK消息机制。XCODE最新版本是XCODE6,整合了苹果在WWDC大会上发布的新语言SWIFT。25本章小结苹果IOS是由苹果公司开发的手持设备操作系统。苹果公司最早于2007年1月9日的MACWORLD大会上公布这个系统,最初是设计给IPHONE使用的,后来陆续套用到IPODTOUCH、IPAD以及APPLETV等苹果产品上。使用苹果电脑开发苹果软件,在XCODE上使用OC语言开发音乐播放软件。信息科学与技术学院学士学位论文113需求分析31可行性需求分析使用OBJECTIVEC编程技术需求可行性分析OBJECTIVEC是C语言的面向对象扩展,可以将其称为“带有对象的C”。相对于其他面向对象语言,OBJECTIVEC更加容易学习。动态绑定函数和消息的最根本不同是函数和它的参数是在编译的时候已经确定下来,但是消息和接收对象知道程序已经在运行,消息在传递时才能确定下来。确切的消息方法实现依赖于消息的接收者,不同的接收者可能有相同的方法名不同的方法实现运行时消息例程查找接收者和消息方法,找到消息方法实现的机器码,呼叫这个方法,传递给它消息实例变量指针。多态性在OBJECTIVEC中消息的调用看上去和标准C中的函数调用相似,但因为方法属于一个对象,消息的行为与函数调用还是不同,在一些情况下,一些对象仅能对针对它涉及的方法起作用。这意味着两个对象对同样的消息有着不同的响应,即多态性。OBJECTIVEC中多态性和动态绑定配合使用,可以使代码提供给任意数量不同类型的对象使用,这些对象不需要再写代码的时候就已经定义好,它们可以是以后开发的对象,也可以是其他项目的对象。面向对象面向对象程序构建在多种对象之上,基于COCOA框架的程序可能使用NSMATRIX对象、NSWINDOW对象、NSDIRECTONARY对象、NSFONT对象以及许信息科学与技术学院学士学位论文12多其它对象。在OBJECTIVEC中通过定义类来定义对象。面向对象让开发者更容易开发应用程序软件,以及更加规范化。继承性类的定义是累进的,任个新类都是在另一个类的基础上定义的,新类继承了它的方法和实例变量。继承使所有的类构成一颗树形的结构,在OBJECTIVEC中使用类一般要继承于基类NSOBJECT,因为NSOBJECT提供了大量的有用特性。比如,一些图形类,需要继承于SHAPE类,而SHAPE是GRAPHIC类的子类,GRAPHIC又继承于NSOBJECT类,因此,还是间接继承于NSOBJECT类。类的继承关系图31所示NSOBJECTGRAPHICIMAGETEXTSHAPELINERECTANGLECIRCLESQUARE图31OBJECTIVEC类继承图1使用工具方面开发环境为XCODE62操作系统方面使用MAC108操作系统。信息科学与技术学院学士学位论文133硬件可行性一台已经安装有所有必备的软件及相应软件设备的计算机;内存要求大于或等于2G。社会因素和市场因素可行性如今社会发展迅速,每个人都不再满足于功能单一的音乐播放器,越多倾向于娱乐性能完备的音乐播放系统。用户对在听音乐的同时还可以按照目前市场情形,越来越多的移动开发者涌进IOS开发领域。IOS平台上应用软件,APPSTORE的支付模式更为成熟而且有监管,另外IOS的兼容性问题小,开发人员不用考虑太多的配置兼容问题,美观大方的外形,更是吸引了用户。而且其良好的用户体验,都为IOS的发展奠定了良好的基础。该音乐播放系统,可以在听歌的同时玩本地小游戏,给用户极好的娱乐效果。32UI需求分析软件界面是人与计算机之间的媒介。用户通过软件界面来与计算机进行信息交换。因此,软件界面的质量,直接关系到应用系统的性能能否充分发挥,能否使用户准确、高效、轻松、愉快地工作,所以软件的友好性、易用性对于软件系统至关重要。目前国内软件开发者在设计过程中很注重软件的开发技术及其具有的业务功能,而忽略了用户对软件界面的需求,影响软件的易用性、友好性;对界面设计的研究也集中在界面设计技术、设计手段上面。软件开发人员在设计时以经验为参考依据,缺乏对实际用户需求的了解。而软件的友好性、易用性同用户特征紧密相联,同样的软件界面,不同用户可能有绝然相反的评价。因此分析用户特征、了解用户需求和操作习惯,是开发软件界面的必有步骤,必须引起足够重视。本文讨论了一种界面需求分析的方法,意在探讨研究如何完成针对系统所有用户的界面需求定义,从而开发为用户所接受的界面。讨论该方法的目的在于帮助设计人员快速明确用户的界面需求,让用户充分参与到界面需求分析中,从而在最终界面需求说明中体现用户的思想,满足信息科学与技术学院学士学位论文14用户要求。33功能需求分析根据系统功能划分,本系统详细需求描述如下1音乐播放功能需求为了给用户最好的用户体验,本功能模块实现MP3音乐文件的播放,歌曲的切换,音乐的暂停,音乐的开始,歌曲图片的显示,音量的调整,随意拖动滚动条来播放音乐等。2音乐播放列表功能需求该模块实现的是音乐信息的管理,包括播放哪一个音乐,本地音乐播放列表的显示,所有的音乐信息等等。3在线搜索音乐功能需求该模块实现的是使用网络API来在线搜索音乐,还包括搜索结果的正确显示等等。4在线音乐下载功能需求该模块实现的是将通过网络API搜索到的音乐下载到本地,并显示下载列表。播放界面要布局合理,颜色舒适。界面为了体现简洁,方便的特点,主要使用了TABBAR分为3大类,分别对应着网络,本地及设置模块。在各个播放列表中,都有一个按钮,用于返回正在播放的界面,这样,对于用户操作来说是十分方便的。信息科学与技术学院学士学位论文1534存储操作需求分析基本原理OC在创建对象时,不会直接返回该对象,而是返回一个指向对象的指针,因此出来基本类型以外,我们在OC中基本上都在使用指针。CLASSAACLASSAALLOCINIT在CLASSAALLOC的时候,已经发送消息通知系统给CLASSA的对象分配内存空间,并且返回了指向未初始化的对象的一个指针。未初始化的CLASSA对象接手到INIT消息,INIT迒回指向已初始化后的CLASSA对象的一个指针,然后将其赋值给变量A。在创建并使用完一个对象的时候,用户需要手动地去释放该对象。如果指针A和B同时指向堆中同一块内存地址CLASSAACLASSAALLOCINITCLASSABAADEALLOC当执行到第三行的时候,指针B就成了无头指针。返回是一个在C中也是常见的错误,我们需要避免返类错误,因为无头指针是危险的。内存泄露就如上面列子所示,当生成CLASSA对象时,指针A拥有对该对象的访问权。如果失去了对一个对象的访问权,而又没有将RETAINCOUNT减至0,就会造成内存泄露。也就是说,分配出去的内存无法回收。AUTORELEASEPOOL为了方便程序员管理内存,苹果在OC中引入了自动释放池AUTORELEASEPOOL。在遵守一些规则的情况下,可以自动释放对象。但即使有返回这么一个工具,OC的内存仍需要程序员时刻关注。AUTORELEASEPOOL的原理AUTORELEASEPOOL全名叫做NSAUTORELEASEPOOL,是OC中的一个类。AUTORELEASEPOOL并不是天生就有的,你需要手动的去创建它信息科学与技术学院学士学位论文16NSAUTORELEASEPOOLPOOLNSAUTORELEASEPOOLALLOCINIT一般地,在新建一个IPHONE项目的时候,XCODE会自动地为你创建一个AUTORELEASEPOOL,返回POOL就写在MAIN函数里面。在NSAUTORELEASEPOOL中包含了一个可变数组,用来存储被声明为AUTORELEASE的对象。当NSAUTORELEASEPOOL自身被销毁的时候,它会遍历返个数组,RELEASE数组中的每一个成员(注意,返里另是RELEASE,并没有直接销毁对象)。若成员的RETAINCOUNT大于1,那么对象没有被销毁,造成内存泄露。手动管理内存使用ALLOC、NEW、COPY创建一个对象,该对象的RETAINCOUNT都等于1,需要用RELEASE来释放该对象。谁创建,谁去释放。在返3钟方法以外的方法创建的对象,都被系统默认的声明为AUTORELEASE。CLASSAACLASSAALLOCINITCLASSABABRETAINBRELEASEBNIL把一个指针赋值给另外一个指针的时候,A指针所指向的对象的引用次数并没有增加,也就是说,对象的RETAINCOUNT依然等亍1。叧有在RETAIN了之后,RETAINCOUNT才会加1。那么,如果返时候执行ARELEASE,另是A指针放弃了对对象的访问权,对象的RETAINCOUNT减1,对象没有被销毁。另有当B也执行了RELEASE方法之后,才会将对象销毁掉。35本章小结“需求分析“,是指对要解决的事情进行详细的分析,弄清楚事情的要求,包括需要输入什么DATE,要得到什么结果,最后应输出什么。可以说,在软件工程当中的“需求分析”就是确定要计算机“做什么”,要达到什么样的效果。可以说需求分析是做系统之前必做的。信息科学与技术学院学士学位论文17在音乐播放器中,需求分析指的是在建立一个新的或改变一个现存的描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后,他们才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能。信息科学与技术学院学士学位论文184系统设计41UI设计音乐播放器的UI即USERINTERFACE用户界面的简称。UI设计是指对音乐播放软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让播放器变得有个性有品位,还要让播放器的操作变得舒适简单、自由,充分体现软件的定位和特点。音乐播放软件设计可分为两个部分编码设计与UI设计。UI的本意是用户界面,是英文USER和INTERFACE的缩写。从字面上看是用户与界面2个部分组成,但实际上还包括用户与界面之间的交互关系。在飞速发展的电子产品中,界面美化设计工作一点点的被重视起来。做界面设计的“工程师”也随之被称之为“UI工程师”。其实软件界面设计就像工业产品中的工业造型设计一样,是产品的重要卖点。一个好的电子产品拥有美观的界面会给人带来舒适的视觉享受,拉近人与商品的心理距离,是建立在科学性之上的漂亮的艺术设计。检验一个音乐播放器界面的标准既不是某个项目开发组领导的意见也不是项目成员投票的结果,而是终端用户的感受42功能设计1简洁性界面的简易是要让用户方便使用、容易了解产品,且能减少用户发生错误选择的可能性。2记忆消耗最小化人脑不是电脑,在设计界面时必须要考虑人类大脑处理信息的限度。人类的短期记忆有限且极不稳定,24小时内存在约25的遗忘率。所以对用户来说,浏览信息要比记忆更容易。信息科学与技术学院学士学位论文193同一性它是每一个优秀界面都具备的特点。界面的结构必须清晰且一致,风格必须与产品内容相一致。4清楚在视觉效果上便于理解和使用。5用户的熟悉程度用户可通过已掌握的知识来使用界面,但不应超出一般常识。6从用户习惯考虑想用户所想,做用户所做。用户总是按照他们自己的方法理解和使用。通过比较两个不同世界真实与虚拟的事物,完成更好的设计。如书籍对比竹简。7安全性用户能自由的作出选择,且所有选择都是可逆的。在用户作出危险的选择时有信息介入系统的提示。8灵巧性简单来说就是要让用户方便的使用,但不同于上述。即互动多重性,不局限于单一的工具包括鼠标、键盘或手柄、界面。信息科学与技术学院学士学位论文2043存储操作苹果一直没有强调的一点是,关于属性中的RETAIN。事实上,属性中带有RETAIN的,在赋值的时候可能已经在合成的SETTER中RETAIN了一次,因此,返里也需要RELEASE。PROPERTY实际上是GETTER和SETTER,SYNTHESIZE是合成返2个方法。为什么在声明了属性之后可以用“”来直接调用成员变量呢那是因为声明属性以后系统根据你给的属性合成了一个SET方法和一个GET方法。使用“”属性并没有直接关联,如果你不嫌麻烦,在你的程序里面多写一个SET和GET方法,你也可以使用“”来调用变量。PROPERTY,如果你里面什么都不写,那么系统会默认的把你的属性设置为PROPERTYATOMIC,ASSIGN关于NONATOMIC返个属性没有对应的ATOMIC关键字,即使我上面是返么写,但ATOMIC是在你没有声明返个特性的时候系统默认,你无法主动去声明返一特性。如果你的程序另有一个主线程,戒者你确定你的程序不会在2个或者以上线程运作的时候访问同一个变量,那么你可以声明为NONATOMIC。指定NONATOMIC特性,编译器合成访问器的时候不会去考虑线程安全问题。如果你的多个线程在同一时间会访问到返个变量的话,可以将特性声明为ATOMIC通过省略关键字NONATOMIC。在返种特性的状态下,编辑器在合成访问器的时候就会在访问器里面加一个锁(SYNCHRONIZED),在同一时间叧能有一个线程访问该变量。但是使用锁是需要付出代价的,一个声明为ATOMIC的属性,在设置和获取返个变量的时候都要比声明为NONATOMIC的慢。所以如果你丌打算编写多线程代码,最好把变量的属性特性声明为NONATOMIC。关于ASSIGN、RETAIN和COPYASSIGN是系统默认的属性特性,它几乎适用于OC的所有变量类型。对亍非对象类型的变量,ASSIGN是唯一可选的特性。但是如果你在引用计数下给一个对象类型的变量声明为ASSIGN,那么你会在编译的时候收到一条来自编译器的警告。因为ASSIGN对亍在引用计数下的对象特性,另创建了一个弱引用(也就是平时说的浅复制)。返样使用变量会很危险。当你RELEASE了前一个对象的时候,被赋值的对象指针就成了无头指针了。因此在为对象类型的变量声明属性的时候,尽量少使用ASSIGN。关于ASSIGN合成的SETTER,看起来是返样的VOIDSETOBJACLASSAAOBJAA信息科学与技术学院学士学位论文21在深入RETAIN之前,先把声明为RETAIN特性的SETTER写出来VOIDSETOBJACLASSAAIFOBJAAOBJARELEASEOBJAAOBJARETAIN/对象的RETAINCOUNT加1明显的,在RETAIN的SETTER中,变量RETAIN了一次,那么,即使你在程序中SELFOBJAA另写了返么一句,OBJA仍然需要RELEASE,才能保证对象的RETAINCOUNT是正确的。但是如果你的代码OBJAA;另写了返么一句,那么返里叧是迕行了一次浅复制,对象的RETAINCOUNT并没有增加,因此返样写的话,你不需要在后面RELEASEOBJA。返2句话的区别是,第一句使用了编译器生成的SETTER来设置OBJA的值,而第二句叧是一个简单的指针赋值。COPY的SETTER看起来是返样的VOIDSETOBJACLASSAACLASSATEMPOBJAOBJAACOPYWITHZONENILTEMPRELEASE复制必须通过实现COPYWITHZONE返个方法,因次COPY返个特性另适用于拥有返个方法的类型,也就是说,必须返个类支持复制。复制是把原来的对象RELEASE掉,然后让指针指向一个新的对象的副本。因此即使在SETTER里面RELEASE了原来的对象,你仍然需要在后面RELEASE新指向的对象44本章小结UI是用户界面,是英文USER和INTERFACE的英文缩写。从字面上看是使用者与界面2个组成部分,但实际上还包括用户与界面之间的交互关系。用户研究技术是站在人文学科的角度来研究产品,站在用户的角度介入到产品的开发和设计中。信息科学与技术学院学士学位论文22用户研究通过对于用户的工作环境、产品的使用习惯等研究,使得在产品开发的前期能够把用户对于产品功能的要求加大、对设计和外观方面的要求融入到产品的开发过程中去,从而帮助企业完善产品设计或者探索一个新产品概念。这部分指人与机之间的交互工程,在过去交互设计也由程序员来做,其实程序员擅长编码,而不善于与最终用户交互。所以,很多的软件虽然功能比较齐全,但是交互方面设计很粗糙,繁琐难用,学习困难。使用这样的软件后,不是使人聪明与进步而是让人感到愚弄与羞辱。许多人因为不能操作电脑软件而下岗失业,这样的交互使电脑成为让人恐惧的科技怪兽。于是我们把交互设计从程序员的工作中分离出来单独成为一个学科,也就是人机交互设计的快感。在漫长的软件发展中,界面UI设计工作一直没有被重视起来。做界面设计的人也被贬义的称为“美工”。其实软件界面设计就像工业产品中的工业造型设计一样,是产品的重要买点。一个友好美观的界面会给人带来舒适的视觉享受,拉近人与电脑的距离,为商家创造卖点。界面设计不是单纯的美术绘画,他需要定位使用者、使用环境、使用方式并且为最终用户而设计,是纯粹的科学性的艺术设计。所以界面设计要和用户研究紧密结合,是一个不断为最终用户设计满意视觉效果的过程。信息科学与技术学院学士学位论文235系统实现51UI实现播放器播放界面功能实现图51播放器主界面52功能实现播放进度的跟踪显示在播放音乐的时侯,我们希望可以看到播放的进度,通过拉动进度条来方便快捷的实现对歌曲的快进,快退的功能。通过创建一个计时器,利用计时器来实时更新进度条。信息科学与技术学院学士学位论文24图52播放进度而进度条的进度显示是用UISLIDER控件控件。其VALUE的值为0到1,利用正在播放的时间与一共的时长之比来控制UISLIDER的值,达到进度条的跟着显示。UISLIDER具有一个CHANGE事件,可以改变VALUE的值来设置当前播放的一个进度,来达到一个快进,快退的功能。歌词的同步显示有了以上功能,对歌词的显示以上一个必不可少的功能。即是以“时间歌词”的格式存储。那么歌词的显示形式主要是通过播放的时间与歌词显示的时间相对比,如果一致则显示。因此,通过将歌词和时间分别用两个数组装入,当正在播放的时间与数组中某个时间相对应的时侯,显示出当前的歌词。界面上的显示方式主要是通过UILABLE来显示的。有的人不喜欢一句一句的看歌词,想看更多的歌词,那么就加入了全屏歌词的显示。全屏显示的歌词采用的是将所有的歌词装入可变字符串,并对每一句添加分隔符,装入UITEXTVIEW中,通过正在播放时间与歌词的时间对比,来调整UITEXTVIEW内容的高度。而TEXTVIEW具有着滑动的动画效果,使得整个歌词上移的效果更加平滑。信息科学与技术学院学士学位论文25播放列表功能图53音乐榜单播放列表主要采用了表示图UITABLEVIEW来进行显示。这样可以更加直观,更加方便的显示数据。可以通过设置它的代理UITABLEVIEWDELEGATE。实现的主要形式是设置TABLEVIEW的组件为1个NUMBEROFSECTIONSINTABLEVIEW,设置行数NUMBEROFROWSINSECTION,设置每行的内容CELLFORROWATINDEXPATH。当点击的时侯会出发DIDSELECT事件,实现歌曲的播放。缓存歌曲访问IPHONE的应用程序都是在沙盒中运行的。其文件访问仅限于DOCUMENT目录下,所以对与本地歌曲的访问也仅限于DOCUMENT目录下ARRAYWITHCONTENTSOFFILE方法获取目录下的文件路径。对于需要播放播放的歌曲,可以将文件路径传给播放器,就可以进行播放了。信息科学与技术学院学士学位论文26搜索功能图54搜索列表网络歌曲的搜索对于快速查找到自己想找的歌曲是十分有必要的。这里选择的歌曲搜索库是来至于网络的。比如我们选择一首叫滴答的歌曲。只需要使用ASIHTTPREQUEST来请求HTTP/MP3SOGOUCOM/MUSICSOQUERYB5CEB4F0如果知道了产品的内部工作过程,可以通过测试来检测产品内部动作是否按照说明书的规定正常工作前一种称为黒盒测试又称功能测试,后一种方法称为白盒测试又称结构测试在测试本系统时,采用的是白盒测试来设计测试用例,而且在测试过程中,由于条件原因,不能完全按照测试规则由第三方来测试,测试过程和方案设计由作者完成。测试的项目主要的功能性测试有获取网络播放列表及播放本地播放列表及IPOD库音乐的读取及播放播放不同音乐时保证当前播放的只有一个音量控制的实现及播放的快进和快退功能的实现歌词正常显示歌曲三种播放模式的实现歌曲搜索功能的实现功能菜单各功能实现测试环境装有最新XCODE苹果软件开发平台的MACBOOK电脑。信息科学与技术学院学士学位论文3062功能测试首先,打开软件并且保证当前网络畅通,点击歌曲分类进去网络播放列表,查看是否存在网络播放列表。如图61所示图61网络歌曲列表通过点击李宇春进入新歌播放列表,发现存在网络歌曲播放列表,选择一首进行播放,进入播放播放界面,查看是否可以正常播放。如图62所示图62正在播放列表信息科学与技术学院学士学位论文31点击进入查看,可以看到存在刚下载的歌曲,选择另一首进行播放,进入正在播放的界面,可以看到进度条,事件等重置,当前播放的歌曲变成了刚选择的歌曲。如图63所示图63正在播放点击TABBAR进入功能设置模块,默认的设置是图片和歌词的下载是允许的,可以先选择一首歌曲播放,可以看到有歌手的图片,下面歌词显示的地方有歌词出现,并且是与歌曲是对应的。向左滑动屏幕可以看到全屏的歌词,并随着歌曲的播放,向上滑动,正在播放的歌词是显示在中间,可以看到这也是同步的。如图64图65所示图64歌词信息科学与技术学院学士学位论文32图65全屏歌词现在关闭歌词和图片这两个功能,再次选择一首歌曲进行播放,现在可以看到没有歌词显示了。如图66所示图66正在播放(无图片和歌词)63本章小结在音乐播放软件模块,测试音乐播放是否流畅,是否能正常切换歌曲,是否能够快进歌曲播放,是否能调整音量等。信息科学与技术学院学士学位论
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46016-2025中小学生午休课桌椅通用技术要求
- GB/T 10425-2025烧结金属摩擦材料表观硬度的测定
- 高级维修电工理论试题附答案
- 针灸学题库及答案
- 中医骨病试题及答案
- 胸心外科考试题及答案
- 主管护师考试试题及答案《专业知识》
- 银行招聘模拟试题及参考答案详解
- 招教考试章节试题及答案
- 护士执业资格考试历年真题试卷及答案
- 电流保护原理课件
- 民航概论教学课件
- DBJT15-212-2021 智慧排水建设技术规范
- 民俗学课件万建中
- 能源与动力工程专业培养目标合理性评价分析报告
- 公司员工活动室管理制度
- 2025年水晶手链市场需求分析
- CJ/T 3066-1997内磁水处理器
- 院内急重症快速反应小组
- 湖南省省情试题及答案
- 幕墙玻璃板块平整度检查
评论
0/150
提交评论