iOS音樂播放器(三稿)_第1頁
iOS音樂播放器(三稿)_第2頁
iOS音樂播放器(三稿)_第3頁
iOS音樂播放器(三稿)_第4頁
iOS音樂播放器(三稿)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 信 息 科 學 與 技 術 學 院 學 士 學 位 論 文 JIU JIANG UNIVERSITY畢 業(yè) 論 文 題 目 iOS音樂播放器 英文題目 iOS MusicPlayer 院 系 信息科學與技術學院 專 業(yè) 計算機科學與技術 姓 名 吳傳東 班級學號 A111146 指導教師 楊瀟 二一五年五月36目 錄目 錄1摘 要3Abstract41 緒論51.1課題來源及研究背景51.2 開發(fā)目的及意義51.3 課題研究內容51.4 論文的組織與結構62 相關技術概述72.1系統(tǒng)架構及開發(fā)環(huán)境簡介72.2 音樂播放器應用控件及組件介紹72.3 音樂播放器的生命周期92.4 音樂播放器應用

2、技術的介紹102.5本章小結103 需求與分析113.1 可行性需求分析113.2 UI需求分析133.3 功能需求分析143.4 存儲操作需求分析153.5 本章小結164 系統(tǒng)設計184.1 UI設計184.2 功能設計184.3 存儲操作204.4 本章小結215 系統(tǒng)實現235.1 UI實現235.2 功能實現235.3 存儲操作實現265.4 本章小結276 軟件測試296.1 兼容性測試296.2 功能測試306.3 本章小結337 總結與展望347.1 總結347.2 展望34致 謝35參考文獻36摘 要針對iOS系統(tǒng)上的一款音樂播放器程序進行設計與實現討論。該音樂播放器實現了上

3、一首,下一首,音量調節(jié),歌詞同步,播放模式的切換,快進快退等基本功能,還實現了對網絡歌曲的分類獲取及在線實時播放。目前蘋果手機大熱,在全世界火熱銷售,年輕人以擁有一臺屬于自己的蘋果手機為傲。在這個大環(huán)境下學習蘋果軟件開發(fā),是年輕人非常不錯的選擇。所以開發(fā)一款音樂播放軟件非常具有市場前景。這款音樂軟件中有我完成了系統(tǒng)設計,系統(tǒng)架構,UI界面設計,以及最后的軟件測試等工作。關鍵詞 iOS; objectC;音樂播放器AbstractAgainst the the music player program in the system of ios carried out the Design and

4、 Implementation of discuss. the basic functions of the switch to playback mode, fast forward and rewind, but also to achieve the classification of the songs on the network access and on-line real-time playback. The apple mobile phone, hot sell all over the world, young people to have a proud of thei

5、r own iphones. In this environment learning apple software development, is a young man is very good choice. So I developed this kind of music player softwareHave I done in this music software system design, system architecture, UI interface design, and the final software testing, etc.Keywords the iO

6、S; object-C; music player1 緒論1.1課題來源及研究背景當今社會的生活節(jié)奏越來越快,人們對手機的要求也越來越高,由于手機市場發(fā)展迅速,使得手機操作系統(tǒng)也出現了不同各類,現在的市場上主要有三大手機操作系統(tǒng),Windows phone,Android,以及iOS操作系統(tǒng),其中iOS系統(tǒng)有很大的發(fā)展前景。那么能否在手機上擁有自己編寫的個性音樂播放器呢,本文的音樂播放器就是基于iOS手機平臺的播放器。1.2 開發(fā)目的及意義 現今社會生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一。隨著人們的生活水平越來越高,人們對音樂的需求也越來越高,而傳統(tǒng)的音樂播放器又限于手機內存,在音

7、樂的分類和管理上有著很大的局限性。本設計 的實現的是對音樂能夠控制播放,暫停,停止,上一曲,下一曲,音量調節(jié),視覺外觀,播放列表和歌曲文件的管理操作等多種播放控制功能,界面簡明,操作簡單。添加了對網絡音樂的支持,使得手機只需要聯網就會瞬間擁有百萬首歌曲,不必在局限于手機內存。豐富的歌曲分類功能,使得繁多網絡歌曲的管理,更加的僅僅有條。這樣就打破的傳統(tǒng)播放器內存的限制,是人們能夠享受到更加豐富的歌曲。本項目是一款基于iOS手機平臺的音樂播放器,使iOS手機擁有個性的多媒體播放器,使手機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設計者更

8、加熟練iOS的技術和其它在市場上的特點。1.3 課題研究內容 本系統(tǒng)緊跟當前移動手機開發(fā)趨勢,使用Objective-c語言開發(fā)一個基于iOS平臺的音樂播放娛樂系統(tǒng),實現基于iOS平臺的音樂播放娛樂系統(tǒng)的基本功能。歌的切換以及列表顯示,在聽歌的同時能夠娛樂1.4 論文的組織與結構第一章為緒論,介紹了本文的選題背景和意義,總結國內外音樂播放器研究現狀,同時對論文研究內容安排進行闡述。第二章對系統(tǒng)中涉及的相關理論和關鍵技術進行了研究,對Objective-C開發(fā)語言、iphone手機系統(tǒng)和Mac OS相關技術進行了介紹和分析。第三章對系統(tǒng)進行研究,闡述了系統(tǒng)的功能和性能和UI界面的設計和實現。第四

9、章在前面三章基礎上研發(fā)出iPhone的音樂播放軟件,同時,對系統(tǒng)各模塊設計和實現進行分析,其中對關鍵技術給出了詳細實現過程。最后是論文的總結。2 相關技術概述2.1系統(tǒng)架構及開發(fā)環(huán)境簡介開發(fā)iOS軟件需要使用蘋果官方發(fā)布的Xcode工具軟件,Xcode軟件目前已更新到第6版本,是一款相當強大的開發(fā)工具。使用Xcode我們將按圖2-1來實現播放器的功能。用戶基本操作播放暫停上一首下一首快進快退播放模式單曲循環(huán)順序播放隨機播放 圖2-1播放器功能圖2.2音樂播放器應用控件及組件介紹開發(fā)iOS軟件使用OC語言,并使用蘋果公司所開發(fā)集成的Xcode軟件,開發(fā)音樂播放器需使用到下列方法。System S

10、ound ServicesSystem Sound Services 是最底層也是最簡單的聲音播放服務,調用AudioServicesPlaySystemSound這個方法就可以播放一些簡單的音頻文件,使用此方法只適合播放一些很小的提示或者警告音,因為它有很多限制:如:聲音長度要小于 30 秒、In linear PCM 或者 IMA4 (IMA/ADPCM) 格式的打包成 .caf, .aif,或者 .wav 的文件、不能控制播放的進度、調用方法后立即播放聲音、沒有循環(huán)播放和立體聲控制,另外,它還可以調用系統(tǒng)的震動功能,方法也很簡單。具體的代碼可以參考官方的示例 SysSound,

11、但是官方的示例只有一些簡單的用法,從文檔中我們發(fā)現可以通過AudioServicesAddSystemSoundCompletion方法為音頻播放添加CallBack函數,有了CallBack函數我們可以解決不少問題,比如可以克服 System Sound Services 本身不支持循環(huán)播放的問題。AVAudioPlayer類AVAudioPlayer是AVFoundation.framework中定義的一個類,所以使用要先在工程中引入AVFoundation.framework。我們可以把AVAudioPlayer看作是一個高級的播放器,它支持廣泛的音頻格式,主要是以下這些格式:AAC、A

12、MR(AdaptiveMulti-Rate, aformatforspeech)、 ALAC(AppleLossless)、iLBC(internetLowBitrateCodec, anotherformatforspeech)、 IMA4(IMA/ADPCM)、 linearPCM(uncompressed)、 -lawanda-law、 MP3(MPEG-1audiolayer3 。Audio Queue Services如果以上兩種音頻播放的解決方案都無法滿足你的需求,那么我想你肯定需要使用 Audio Queue Services。使用 Audio Queue Servic

13、es 對音頻進行播放,你可以完全實現對聲音的控制。例如,你可以在聲音數據從文件讀到內存緩沖區(qū)后對聲音進行一定處理再進行播放,從而實現對音頻的快速/慢速播放的功能。MPMusicPlayerController有兩種播放器可以選擇,一種是applicationmusicplayer,另外一種是iPodmusicplayer。第一種播放器是一種內部播放器,當程序對出后停止播放;而第二種播放器則與iPod播放器內的信息相關,退出之后不會停止播放。在播放之前需要設置隊列。MPMoviePlayerController MPMoviePlayerController 與AVAudioPlayer有點類似

14、,前者播放視頻,后者播放音頻,不過也有很大不同,MPMoviePlayerController 可以直接通過遠程URL初始化,而AVAudioPlayer則不可以。不過大體上用起來感覺差不多。格式支持:MOV、MP4、M4V、與3GP等格式,還支持多種音頻格式2.3音樂播放器的生命周期音樂播放器行業(yè)市場供給分析及市場供給預測包括現在音樂播放器行業(yè)市場供給量估計量和預測未來音樂播放器行業(yè)市場的供給能力。音樂播放器行業(yè)市場需求分析及音樂播放器行業(yè)市場需求預測包括現在音樂播放器行業(yè)市場需求量估計和預測音樂播放器行業(yè)未來市場容量及產品競爭能力。通常采用調查分析法、統(tǒng)計分析法和相關分析預測法。音樂播放器

15、行業(yè)市場需求層次和各類地區(qū)市場需求量分析即根據各市場特點、人口分布、經濟收入、消費習慣、行政區(qū)劃、暢銷牌號、生產性消費等,確定不同地區(qū)、不同消費者及用戶的需要量以及運輸和銷售費用。音樂播放器行業(yè)市場競爭格局包括市場主要競爭主體分析,各競爭主體在市場上的地位,以及行業(yè)采取的主要競爭手段等;估計音樂播放器行業(yè)產品生命周期及可銷售時間即預測市場需要的時間,使生產及分配等活動與市場需要量作最適當的配合。通過市場分析可確定產品的未來需求量、品種及持續(xù)時間;產品銷路及競爭能力;產品規(guī)格品種變化及更新;產品需求量的地區(qū)分布等。音樂播放器行業(yè)市場分析報告可為客戶正確制定營銷策略或投資策略提供信息支持。企業(yè)的營

16、銷策略決策或投資策略決策只有建立在扎實的市場分析的基礎上,只有在對影響需求的外部因素和影響購、產、銷的內部因素充分了解和掌握以后,才能減少失誤,提高決策的科學性和正確性,從而將經營風險降到最低限度。2.4 音樂播放器應用技術的介紹Objective-C是非常實際的語言。它是一個用C寫成、很小的運行庫,只會令應用程序的尺寸增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時間會取代了整個系統(tǒng)的運作相反。Objective-C寫成的程序通常不會比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內存來開啟一個窗口的情況相反。因此,Objective-C它完全兼容標準

17、C語言(C+對C語言的兼容僅在于大部分語法上,而在ABI(Application Binary Interface)上,還需要使用extern "C"這種顯式聲明來與C函數進行兼容),而在此基礎上增加了面向對象編程語言的特性以及Smalltalk消息機制。Xcode最新版本是Xcode 6,整合了蘋果在WWDC大會上發(fā)布的新語言Swift。2.5本章小結蘋果iOS是由蘋果公司開發(fā)的手持設備操作系統(tǒng)。蘋果公司最早于2007年1月9日的Macworld大會上公布這個系統(tǒng),最初是設計給iPhone使用的,后來陸續(xù)套用到iPod touch、iPad以及Apple TV等蘋果產品上

18、。使用蘋果電腦開發(fā)蘋果軟件,在Xcode上使用OC語言開發(fā)音樂播放軟件。3需求分析3.1 可行性需求分析使用Objective-C編程技術需求可行性分析 Objective-C是C語言的面向對象擴展,可以將其稱為“帶有對象的C”。相對于其他面向對象語言,Objective-C更加容易學習。 動態(tài)綁定函數和消息的最根本不同是:函數和它的參數是在編譯的時候已經確定下來,但是消息和接收對象知道程序已經在運行,消息在傳遞時才能確定下來。確切的消息方法實現依賴于消息的接收者,不同的接收者可能有相同的方法名不同的方法實現.運行時消息例程查找接收者和消息方法,找到消息方法實現的機器碼,呼叫這個方法,傳遞給它

19、消息實例變量指針。多態(tài)性在Objective-c中消息的調用看上去和標準C中的函數調用相似,但因為方法屬于一個對象,消息的行為與函數調用還是不同,在一些情況下,一些對象僅能對針對它涉及的方法起作用。這意味著兩個對象對同樣的消息有著不同的響應,即多態(tài)性。Objective-c中多態(tài)性和動態(tài)綁定配合使用,可以使代碼提供給任意數量不同類型的對象使用,這些對象不需要再寫代碼的時候就已經定義好,它們可以是以后開發(fā)的對象,也可以是其他項目的對象。面向對象 面向對象程序構建在多種對象之上,基于Cocoa框架的程序可能使用NSMatrix對象、NSWindow對象、NSDirectonary對象、NSFont

20、對象以及許多其它對象。在Objective-c中通過定義類來定義對象。面向對象讓開發(fā)者更容易開發(fā)應用程序軟件,以及更加規(guī)范化。 繼承性 類的定義是累進的,任個新類都是在另一個類的基礎上定義的,新類繼承了它的方法和實例變量。繼承使所有的類構成一顆樹形的結構,在Objective-c中使用類一般要繼承于基類:NSObject,因為NSObject提供了大量的有用特性。比如,一些圖形類,需要繼承于Shape類,而Shape是Graphic類的子類,Graphic又繼承于NSObject類,因此,還是間接繼承于NSObject類。類的繼承關系圖3-1所示:NSObjectGraphicImageTex

21、tShapeLineRectangleCircleSquare圖3-1 Objective-C類繼承圖1.使用工具方面:開發(fā)環(huán)境為xcode 62.操作系統(tǒng)方面:使用mac 10.8操作系統(tǒng)。3.硬件可行性一臺已經安裝有所有必備的軟件及相應軟件設備的計算機;內存要求大于或等于2G。.社會因素和市場因素可行性. 如今社會發(fā)展迅速,每個人都不再滿足于功能單一的音樂播放器,越多傾向于娛樂性能完備的音樂播放系統(tǒng)。用戶對在聽音樂的同時還可以 按照目前市場情形,越來越多的移動開發(fā)者涌進iOS開發(fā)領域。iOS平臺上應用軟件,App Store的支付模式更為成熟而且有監(jiān)管,另外iOS的兼容性問題小,開發(fā)人員不

22、用考慮太多的配置兼容問題,美觀大方的外形,更是吸引了用戶。而且其良好的用戶體驗,都為iOS的發(fā)展奠定了良好的基礎。該音樂播放系統(tǒng),可以在聽歌的同時玩本地小游戲,給用戶極好的娛樂效果。3.2 UI需求分析軟件界面是人與計算機之間的媒介。用戶通過軟件界面來與計算機進行信息交換。因此,軟件界面的質量,直接關系到應用系統(tǒng)的性能能否充分發(fā)揮,能否使用戶準確、高效、輕松、愉快地工作,所以軟件的友好性、易用性對于軟件系統(tǒng)至關重要。目前國內軟件開發(fā)者在設計過程中很注重軟件的開發(fā)技術及其具有的業(yè)務功能,而忽略了用戶對軟件界面的需求,影響軟件的易用性、友好性;對界面設計的研究也集中在界面設計技術、設計手段上面。軟

23、件開發(fā)人員在設計時以經驗為參考依據,缺乏對實際用戶需求的了解。而軟件的友好性、易用性同用戶特征緊密相聯,同樣的軟件界面,不同用戶可能有絕然相反的評價。因此分析用戶特征、了解用戶需求和操作習慣,是開發(fā)軟件界面的必有步驟,必須引起足夠重視。 本文討論了一種界面需求分析的方法,意在探討研究如何完成針對系統(tǒng)所有用戶的界面需求定義,從而開發(fā)為用戶所接受的界面。討論該方法的目的在于幫助設計人員快速明確用戶的界面需求,讓用戶充分參與到界面需求分析中,從而在最終界面需求說明中體現用戶的思想,滿足用戶要求。3.3 功能需求分析根據系統(tǒng)功能劃分,本系統(tǒng)詳細需求描述如下:1音樂播放功能需求 為了給用戶最好的用戶體驗

24、,本功能模塊實現mp3音樂文件的播放,歌曲的切換,音樂的暫停,音樂的開始,歌曲圖片的顯示,音量的調整,隨意拖動滾動條來播放音樂等。2音樂播放列表功能需求 該模塊實現的是音樂信息的管理,包括播放哪一個音樂, 本地音樂播放列表的顯示,所有的音樂信息等等。3在線搜索音樂功能需求 該模塊實現的是使用網絡API來在線搜索音樂,還包括搜索結果的正確顯示等等。4在線音樂下載功能需求該模塊實現的是將通過網絡API搜索到的音樂下載到本地,并顯示下載列表。 播放界面要布局合理,顏色舒適。界面為了體現簡潔,方便的特點,主要使用了tab bar分為3大類,分別對應著網絡,本地及設置模塊。在各個播放列表中,都有一個按鈕

25、,用于返回正在播放的界面,這樣,對于用戶操作來說是十分方便的。3.4 存儲操作需求分析基本原理 OC 在創(chuàng)建對象時,不會直接返回該對象,而是返回一個指向對象的指針,因此出來基本類型以外,我們在 OC 中基本上都在使用指針。 ClassA *a = ClassA alloc init; 在ClassA alloc的時候,已經發(fā)送消息通知系統(tǒng)給 ClassA 的對象分配內存空間,并且返回了指向未初始化的對象的一個指針。未初始化的 ClassA 對象接手到 init 消息,init迒回指向已初始化后的 ClassA 對象的一個指針,然后將其賦值給變量 a。在創(chuàng)建并使用完一個對象的時候,用戶需要手動地

26、去釋放該對象。如果指針 a 和 b 同時指向堆中同一塊內存地址 ClassA *a = ClassA alloc init;ClassA *b = a; a dealloc; 當執(zhí)行到第三行的時候,指針b 就成了無頭指針。返回是一個在 C+中也是常見的錯誤,我們需要避免返類錯誤,因為無頭指針是危險的。內存泄露:就如上面列子所示,當生成 ClassA 對象時,指針 a 擁有對該對象的訪問權。如果失去了對一個對象的訪問權,而又沒有將 retain count 減至 0 ,就會造成內存泄露。也就是說,分配出去的內存無法回收。 Autorelease Pool 為了方便程序員管理內存,蘋果在 OC 中

27、引入了自動釋放池(Autorelease Pool)。在遵守一些規(guī)則的情況下,可以自動釋放對象。但即使有返回這么一個工具,OC 的內存仍需要程序員時刻關注 。 Autorelease Pool 的原理: autorelease pool 全名叫做 NSAutoreleasePool ,是OC 中的一個類。autorelease pool并不是天生就有的,你需要手動的去創(chuàng)建它: NSAutoreleasePool *pool = NSAutoreleasePool alloc init; 一般地,在新建一個 iphone 項目的時候,xcode 會自動地為你創(chuàng)建一個 autorelease po

28、ol ,返回 pool 就寫在 Main 函數里面。在 NSAutoreleasePool 中包含了一個 可變數組,用來存儲被聲明為 autorelease 的對象。當NSAutoreleasePool 自身被銷毀的時候,它會遍歷返個數組,release 數組中的每一個成員(注意,返里另是 release ,并沒有直接銷毀對象)。若成員的retain count 大于 1 ,那么對象沒有被銷毀,造成內存泄露。 手動管理內存 使用 alloc、new、copy 創(chuàng)建一個對象,該對象的 retain count 都等于 1 ,需要用release 來釋放該對象。誰創(chuàng)建,誰去釋放。在返 3 鐘方法以

29、外的方法創(chuàng)建的對象,都被系統(tǒng)默認的聲明為autorelease。 ClassA *a = ClassA alloc init;ClassA *b = a; b retain; b release; b = nil; 把一個指針賦值給另外一個指針的時候,a 指針所指向的對象的引用次數并沒有增加,也就是說,對象的 retain count 依然等亍 1。叧有在retain 了之后,retain count 才會加 1。那么,如果返時候執(zhí)行a release ,另是a 指針放棄了對對象的訪問權,對象的 retain count 減 1 ,對象沒有被銷毀。另有當 b 也執(zhí)行了 release 方法之后

30、,才會將對象銷毀掉。3.5 本章小結"需求分析",是指對要解決的事情進行詳細的分析,弄清楚事情的要求,包括需要輸入什么date,要得到什么結果,最后應輸出什么??梢哉f,在軟件工程當中的“需求分析”就是確定要計算機“做什么”,要達到什么樣的效果??梢哉f需求分析是做系統(tǒng)之前必做的。在音樂播放器中,需求分析指的是在建立一個新的或改變一個現存的描寫新系統(tǒng)的目的、范圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。在這個過程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后,他們才能夠分析和尋求新系統(tǒng)的解決方法。需求分析階段的任務是確定軟件系統(tǒng)功能

31、。4 系統(tǒng)設計 4.1 UI設計音樂播放器的UI即User Interface(用戶界面)的簡稱。UI設計是指對音樂播放軟件的人機交互、操作邏輯、界面美觀的整體設計。好的UI設計不僅是讓播放器變得有個性有品位,還要讓播放器的操作變得舒適簡單、自由,充分體現軟件的定位和特點。音樂播放軟件設計可分為兩個部分:編碼設計與UI設計。UI的本意是用戶界面,是英文User和 Interface的縮寫。從字面上看是用戶與界面2個部分組成,但實際上還包括用戶與界面之間的交互關系。在飛速發(fā)展的電子產品中,界面美化設計工作一點點的被重視起來。做界面設計的“工程師”也隨之被稱之為“ “UI工程師”。其實軟件界面設計

32、就像工業(yè)產品中的工業(yè)造型設計一樣,是產品的重要賣點。一個好的電子產品擁有美觀的界面會給人帶來舒適的視覺享受,拉近人與商品的心理距離,是建立在科學性之上的漂亮的藝術設計。檢驗一個音樂播放器界面的標準既不是某個項目開發(fā)組領導的意見也不是項目成員投票的結果,而是終端用戶的感受4.2 功能設計1.簡潔性界面的簡易是要讓用戶方便使用、容易了解產品,且能減少用戶發(fā)生錯誤選擇的可能性。2.記憶消耗最小化人腦不是電腦,在設計界面時必須要考慮人類大腦處理信息的限度。人類的短期記憶有限且極不穩(wěn)定,24小時內存在約25%的遺忘率。所以對用戶來說,瀏覽信息要比記憶更容易。3同一性它是每一個優(yōu)秀界面都具備的特點。界面的

33、結構必須清晰且一致,風格必須與產品內容相一致。4清楚在視覺效果上便于理解和使用。5用戶的熟悉程度用戶可通過已掌握的知識來使用界面,但不應超出一般常識。6從用戶習慣考慮想用戶所想,做用戶所做。用戶總是按照他們自己的方法理解和使用。通過比較兩個不同世界(真實與虛擬)的事物,完成更好的設計。如:書籍對比竹簡。7.安全性用戶能自由的作出選擇,且所有選擇都是可逆的。在用戶作出危險的選擇時有信息介入系統(tǒng)的提示。8.靈巧性簡單來說就是要讓用戶方便的使用,但不同于上述。即互動多重性,不局限于單一的工具(包括鼠標、鍵盤或手柄、界面)。4.3 存儲操作蘋果一直沒有強調的一點是,關于屬性中的 retain。事實上,

34、屬性中帶有retain 的,在賦值的時候可能已經在合成的 setter 中retain 了一次,因此,返里也需要 perty 實際上是 getter 和 setter ,synthesize 是合成返 2 個方法。為什么在聲明了屬性之后可以用“.”來直接調用成員變量呢?那是因為聲明屬性以后系統(tǒng)根據你給的屬性合成了一個 set 方法和一個 get 方法。使用“.”屬性并沒有直接關聯,如果你不嫌麻煩,在你的程序里面多寫一個 set 和 get 方法,你也可以使用“.”來調用變量。property(),如果你里面什么都不寫,那么系統(tǒng)會默認的把你的屬性設置為: property(

35、atomic, assign). 關于 nonatomic:返個屬性沒有對應的 atomic 關鍵字,即使我上面是返么寫,但 atomic 是在你沒有聲明返個特性的時候系統(tǒng)默認,你無法主動去聲明返一特性。如果你的程序另有一個主線程,戒者你確定你的程序不會在 2 個或者以上線程運作的時候訪問同一個變量,那么你可以聲明為 nonatomic。指定nonatomic 特性,編譯器合成訪問器的時候不會去考慮線程安全問題。如果你的多個線程在同一時間會訪問到返個變量的話,可以將特性聲明為 atomic(通過省略關鍵字 nonatomic)。在返種特性的狀態(tài)下,編輯器在合成訪問器的時候就會在訪問器里面加一個

36、鎖(synchronized ),在同一時間叧能有一個線程訪問該變量。 但是使用鎖是需要付出代價的,一個聲明為 atomic 的屬性,在設置和獲取返個變量的時候都要比聲明為 nonatomic 的慢。所以如果你丌打算編寫多線程代碼,最好把變量的屬性特性聲明為 nonatomic。 關于assign、retain 和 copy : assign是系統(tǒng)默認的屬性特性,它幾乎適用于OC 的所有變量類型。對亍非對象類型的變量, assign 是唯一可選的 特性。但是如果你在引用計數下給一個對象類型的變量聲明為 assign ,那么你會在編譯的時候收到一條來自編譯器的警告。因為 assign 對亍在引用

37、計數下的對象特性,另創(chuàng)建了一個弱引用(也就是平時說的淺復制)。返樣使用變量會很危險。當你 release 了前一個對象的時候,被賦值的對象指針就成了無頭指針了。因此在為對象類型的變量聲明屬性的時候,盡量少使用 assign。 關于 assign 合成的 setter ,看起來是返樣的: - (void)setObjA:(ClassA *)a objA = a; 在深入 retain 之前,先把聲明為 retain 特性的 setter 寫出來: - (void)setObjA:(ClassA *)a If(objA != a) objA release; objA = a; objA reta

38、in; /對象的 retain count 加 1 明顯的,在retain 的 setter 中,變量retain 了一次,那么,即使你在程序中self.objA =a;另寫了返么一句,objA 仍然需要 release ,才能保證對象的retain count 是正確的。但是如果你的代碼objA =a;另寫了返么一句,那么返里叧是迕行了一次淺復制,對象的 retain count 并沒有增加,因此返樣寫的話,你不需要在后面 release objA。返 2 句話的區(qū)別是,第一句使用了編譯器生成的 setter 來設置 objA 的值,而第二句叧是一個簡單的指針賦值。copy 的 setter

39、 看起來是返樣的: - (void)setObjA:(ClassA *)a ClassA * temp = objA; objA = a copyWithZone:nil; temp release; 復制必須通過實現copyWithZone :返個方法,因次copy返個特性另適用于擁有返個方法的類型,也就是說,必須返個類支持復制。復制是把原來的對象 release 掉,然后讓指針指向一個新的對象的副本。因此即使在 setter 里面 release 了原來的對象,你仍然需要在后面 release 新指向的對象4.4 本章小結UI是用戶界面,是英文User和 interface的英文縮寫。從字

40、面上看是使用者與界面2個組成部分,但實際上還包括用戶與界面之間的交互關系。用戶研究技術是站在人文學科的角度來研究產品,站在用戶的角度介入到產品的開發(fā)和設計中。用戶研究通過對于用戶的工作環(huán)境、產品的使用習慣等研究,使得在產品開發(fā)的前期能夠把用戶對于產品功能的要求加大、對設計和外觀方面的要求融入到產品的開發(fā)過程中去,從而幫助企業(yè)完善產品設計或者探索一個新產品概念。這部分指人與機之間的交互工程,在過去交互設計也由程序員來做,其實程序員擅長編碼,而不善于與最終用戶交互。所以,很多的軟件雖然功能比較齊全,但是交互方面設計很粗糙,繁瑣難用,學習困難。使用這樣的軟件后,不是使人聰明與進步而是讓人感到愚弄與羞

41、辱。許多人因為不能操作電腦軟件而下崗失業(yè),這樣的交互使電腦成為讓人恐懼的科技怪獸。于是我們把交互設計從程序員的工作中分離出來單獨成為一個學科,也就是人機交互設計的快感。在漫長的軟件發(fā)展中,界面UI設計工作一直沒有被重視起來。做界面設計的人也被貶義的稱為“美工”。其實軟件界面設計就像工業(yè)產品中的工業(yè)造型設計一樣,是產品的重要買點。一個友好美觀的界面會給人帶來舒適的視覺享受,拉近人與電腦的距離,為商家創(chuàng)造賣點。界面設計不是單純的美術繪畫,他需要定位使用者、使用環(huán)境、使用方式并且為最終用戶而設計,是純粹的科學性的藝術設計。所以界面設計要和用戶研究緊密結合,是一個不斷為最終用戶設計滿意視覺效果的過程。

42、5 系統(tǒng)實現5.1 UI實現播放器播放界面功能實現圖 5-1 播放器主界面5.2 功能實現播放進度的跟蹤顯示在播放音樂的時侯,我們希望可以看到播放的進度,通過拉動進度條來方便快捷的實現對歌曲的快進,快退的功能。通過創(chuàng)建一個計時器,利用計時器來實時更新進度條。圖5-2 播放進度而進度條的進度顯示是用UISlider 控件控件。其value的值為0到1,利用正在播放的時間與一共的時長之比來控制UISlider的值,達到進度條的跟著顯示。UISlider具有一個change事件,可以改變value的值來設置當前播放的一個進度,來達到一個快進,快退的功能。歌詞的同步顯示有了以上功能,對歌詞的顯示以上一

43、個必不可少的功能。即是以“時間+歌詞”的格式存儲。那么歌詞的顯示形式主要是通過播放的時間與歌詞顯示的時間相對比,如果一致則顯示。因此,通過將歌詞和時間分別用兩個數組裝入,當正在播放的時間與數組中某個時間相對應的時侯,顯示出當前的歌詞。界面上的顯示方式主要是通過UILable來顯示的。有的人不喜歡一句一句的看歌詞,想看更多的歌詞,那么就加入了全屏歌詞的顯示。全屏顯示的歌詞采用的是將所有的歌詞裝入可變字符串,并對每一句添加分隔符,裝入UItextView中,通過正在播放時間與歌詞的時間對比,來調整UItextView內容的高度。而textview具有著滑動的動畫效果,使得整個歌詞上移的效果更加平滑

44、。播放列表功能圖5-3 音樂榜單播放列表主要采用了表示圖:UITableView來進行顯示。這樣可以更加直觀,更加方便的顯示數據。可以通過設置它的代理UITableViewDelegate。實現的主要形式是:設置tableView的組件為1個:numberOfSectionsInTableView:,設置行數: numberofRowsInSection:,設置每行的內容:cellForRowAtIndexPath。當點擊的時侯會出發(fā)didselect事件,實現歌曲的播放。緩存歌曲訪問Iphone的應用程序都是在沙盒中運行的。其文件訪問僅限于document目錄下,所以對與本地歌曲的訪問也僅限

45、于document目錄下arrayWithContentsOfFile:方法獲取目錄下的文件路徑。對于需要播放播放的歌曲,可以將文件路徑傳給播放器,就可以進行播放了。搜索功能 圖5-4 搜索列表網絡歌曲的搜索對于快速查找到自己想找的歌曲是十分有必要的。這里選擇的歌曲搜索庫是來至于網絡的。比如我們選擇一首叫滴答的歌曲。只需要使用ASIHTTPRequest來請求5.3 存儲操作實現實體聯系模型主要是由實體、屬性以及實體之間的聯系組成12。通過對現實世界的概念模型的抽象,確立實體為歌曲、歌詞、用戶。根據音樂播放器的功能需求的分析結果,得出數據庫的E-R圖5-5如下所示:圖5-5 歌曲E-R圖根據數

46、據字典中的數據存儲、數據流、處理邏輯、實體的屬性及以上數據庫設計中的概念結構設計模型,建立相關表進而得到數據庫的邏輯結構設計,即數據庫表。點擊歌曲下載按鈕如圖5-6所示 圖5-6開始下載如圖5-7所示圖5-7下載完成如圖5-8所示圖5-85.4 本章小結在進行UI設計時需要充分考慮布局的合理化問題,遵循用戶從上而下,自左向右瀏覽、操作習慣,避免常用業(yè)務功能按鍵排列過于分散,以造成用戶鼠標移動距離過長的弊端。多做“減法”運算,將不常用的功能區(qū)塊隱藏,以保持界面的簡潔,使用戶專注于主要業(yè)務操作流程,有利于提高軟件的易用性及可用性,實現播放器的界面設計需要考慮到界面的美觀性與代碼的簡潔性。6 軟件測

47、試6.1 兼容性測試測試任何產品都有兩種方法:如果已經知道了產品應該具有的功能,可以通 過測試來檢驗是否每個功能正常使用;如果知道了產品的內部工作過程,可以通過測試來檢測產品內部動作是否按照說明書的規(guī)定正常工作.前一種稱為黒盒測 試又稱功能測試,后一種方法稱為白盒測試又稱結構測試. 在測試本系統(tǒng)時,采用的是白盒測試來設計測試用例,而且在測試過程中, 由于條件原因,不能完全按照測試規(guī)則由第三方來測試,測試過程和方案設計由作者完成。測試的項目主要的功能性測試有:獲取網絡播放列表及播放本地播放列表及Ipod庫音樂的讀取及播放播放不同音樂時保證當前播放的只有一個音量控制的實現及播放的快進和快退功能的實

48、現歌詞正常顯示歌曲三種播放模式的實現歌曲搜索功能的實現功能菜單各功能實現測試環(huán)境裝有最新Xcode蘋果軟件開發(fā)平臺的Macbook電腦。6.2 功能測試首先,打開軟件并且保證當前網絡暢通,點擊歌曲分類進去網絡播放列表,查看是否存在網絡播放列表。如圖6-1所示圖6-1 網絡歌曲列表通過點擊李宇春進入新歌播放列表,發(fā)現存在網絡歌曲播放列表,選擇一首進行播放,進入播放播放界面,查看是否可以正常播放。如圖6-2所示圖6-2 正在播放列表點擊進入查看,可以看到存在剛下載的歌曲,選擇另一首進行播放,進入正在播放的界面,可以看到進度條,事件等重置,當前播放的歌曲變成了剛選擇的歌曲。如圖6-3所示圖6-3正在播放點擊tabbar進入功能設置模塊,默認的設置是圖片和歌詞的下載是允許的,可以先選擇一首歌曲播放,可以看到有歌手的圖片,下面歌詞顯示的地方有歌詞出現,并且是與歌曲是對應的。向左滑動屏幕可以看到全屏的歌詞,并隨著歌曲的播放,向上滑動,正在播放的歌詞是顯示在中間,可以看到這也是同步的。如圖6-4圖6-5所示圖6-4 歌詞圖6-5全屏歌詞現在關閉歌詞和圖片這兩個功能,再次選擇一首歌曲進行播放,現在可以看到沒有歌詞顯示了。如圖6-6所示圖6-6正在播放(無圖片和歌詞)6.3 本章小結在音樂播放軟件模塊,測試音樂播放是否流暢,是否能正常切換歌曲,是否能夠快進歌曲播放,是否能調整

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論