畢業(yè)設(shè)計(jì)--基于ios平臺(tái)的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)論文(設(shè)計(jì))</b></p><p>  2015 屆 電子通信工程 專業(yè) 1113072 班級(jí)</p><p>  題 目 基于iOS平臺(tái)的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  2015 年 5 月 25 日</p><p><b&g

2、t;  摘 要</b></p><p>  現(xiàn)在,我們已經(jīng)越來越進(jìn)入一個(gè)信息技術(shù),科學(xué)技術(shù)都日益發(fā)達(dá)的時(shí)代,在日常生活中,各式各樣的視頻播放器應(yīng)用越來越普及,因此開發(fā)一款簡(jiǎn)單方便的視頻播放器是非常迎合用戶需求的。本課題就是利用互聯(lián)網(wǎng)技術(shù)的傳播廣泛性來設(shè)計(jì)實(shí)現(xiàn)的一款手機(jī)客戶端的視頻播放器應(yīng)用。本課題是基于iOS平臺(tái)下Objective-C開發(fā)語(yǔ)言以及C語(yǔ)言來實(shí)現(xiàn),利用系統(tǒng)提供的類以及第三方類庫(kù)實(shí)現(xiàn)數(shù)據(jù)

3、加載、視頻播放和數(shù)據(jù)處理,主要實(shí)現(xiàn)各類視頻信息的展示與播放功能。課題所用的數(shù)據(jù)接口信息來自第三方供應(yīng)商,數(shù)據(jù)來源穩(wěn)定準(zhǔn)確。通過測(cè)試,基本可以實(shí)現(xiàn)觀看視頻信息與搜索視頻信息的功能,應(yīng)用程序簡(jiǎn)單易操作,具有很好的用戶體驗(yàn)度。</p><p>  手機(jī)客戶端;iOS平臺(tái);視頻播放器;</p><p><b>  Abstract</b></p><p&g

4、t;  With the progress of science and technology, the rapid development of network technology, smart phones now in China's development trend in recent years, everyone is there for all to see, mention smartphones have

5、to speak phone software, smart power to run from game entertainment to a variety of software for mobile office. Subject is the use of mobile Internet features provide people with better, more full of game strategy. This

6、topic is to use the Object - the C programming language to implement</p><p><b>  目 錄</b></p><p><b>  1概論1</b></p><p>  1.1課題研發(fā)的背景1</p><p>  1

7、.2課題研究的目的和意義1</p><p>  1.3課題預(yù)期的目標(biāo)1</p><p>  2相關(guān)技術(shù)的介紹2</p><p><b>  2.1軟件環(huán)境2</b></p><p>  2.2核心技術(shù)介紹2</p><p>  2.2.1內(nèi)存管理機(jī)制2</p><p

8、>  2.2.2oc語(yǔ)言3</p><p><b>  3需求分析4</b></p><p>  3.1軟件功能需求分析4</p><p>  3.1.1視頻信息搜索4</p><p>  3.1.2視頻信息展示4</p><p>  3.1.3視頻信息播放5</p>

9、<p>  3.2軟件可行性分析5</p><p><b>  4系統(tǒng)設(shè)計(jì)6</b></p><p><b>  4.1對(duì)象模型6</b></p><p>  4.2MVC模式7</p><p><b>  5系統(tǒng)實(shí)現(xiàn)9</b></p>&

10、lt;p>  5.1開發(fā)所用的關(guān)鍵類9</p><p>  5.2應(yīng)用程序編碼實(shí)現(xiàn)12</p><p>  5.2.1應(yīng)用程序工作流程12</p><p>  5.2.2應(yīng)用程序管理類13</p><p>  5.2.3應(yīng)用程序工具類14</p><p>  5.2.4應(yīng)用程序功能實(shí)現(xiàn)15</p

11、><p>  5.2.5應(yīng)用程序界面實(shí)現(xiàn)16</p><p>  5.3應(yīng)用程序模塊實(shí)現(xiàn)18</p><p><b>  6系統(tǒng)測(cè)試23</b></p><p><b>  致謝24</b></p><p><b>  參考文獻(xiàn)24</b><

12、/p><p>  基于iOS平臺(tái)的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  1概論</b></p><p>  現(xiàn)在,我們已經(jīng)越來越進(jìn)入一個(gè)信息技術(shù),科學(xué)技術(shù)都日益發(fā)達(dá)的時(shí)代,視頻應(yīng)用已經(jīng)日益普及。在我們生活中時(shí)時(shí)可見對(duì)于我們的日常生活來說必不可少的高科技產(chǎn)品,比如平板電腦,智能手機(jī)等等。幾乎在所有的城市當(dāng)中,每天都可以看到手持手機(jī)專心致

13、志地欣賞視頻的人們,這在我們工作生活中有著切身體會(huì)。</p><p>  1.1課題研發(fā)的背景</p><p>  隨著如今智能手機(jī)的普及,視頻應(yīng)用不僅僅只是在電腦上有很多人使用,越來越多的手機(jī)視頻應(yīng)用出現(xiàn)在各種手機(jī)平臺(tái)上。據(jù)大致統(tǒng)計(jì),視頻應(yīng)用在豐富我們的日常生活占據(jù)重要組成部分,因此開發(fā)一款好用又簡(jiǎn)單的應(yīng)用對(duì)于開發(fā)商來說是一件很具有市場(chǎng)前景的不錯(cuò)的選擇。</p><p

14、>  1.2課題研究的目的和意義</p><p>  本項(xiàng)目旨在給廣大消費(fèi)者群體提供一個(gè)更方便快捷的網(wǎng)絡(luò)視頻平臺(tái)。提供對(duì)人們生活與娛樂的現(xiàn)狀的了解,我們明白這個(gè)項(xiàng)目的可行性。通過這個(gè)項(xiàng)目,人們可以看到自己想要的視頻信息,本項(xiàng)目可以通過分類來達(dá)到用戶的需求,用戶可以根據(jù)自己的喜好找到網(wǎng)絡(luò)視頻,通過網(wǎng)絡(luò)和人們普遍使用的手機(jī)等通訊工具來度過自己的娛樂和休閑時(shí)間。</p><p>  1.3

15、課題預(yù)期的目標(biāo)</p><p>  本課題研究的主要內(nèi)容是:利用Objective-C和一些第三方類去實(shí)現(xiàn)的一款應(yīng)用軟件,通過對(duì)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)解析、UI框架的搭建、第三方庫(kù)SDWebImage的使用等實(shí)現(xiàn)此應(yīng)用程序的視頻信息的展示以及觀看等基本的功能。具體的功能如下:</p><p><b>  2相關(guān)技術(shù)的介紹</b></p><p>  就本

16、課題來說,我們所需要的軟件支持和技術(shù)支持是我們保證開發(fā)進(jìn)度與完成力度的前提。因此對(duì)于本課題中所需要的開發(fā)技術(shù)說明分為如下兩部分:軟件環(huán)境、核心技術(shù)簡(jiǎn)介。</p><p><b>  2.1軟件環(huán)境</b></p><p><b>  (1) 硬件環(huán)境</b></p><p>  操作系統(tǒng):Mac OS X </p&g

17、t;<p><b>  內(nèi)存容量:8GB</b></p><p>  硬盤容量:500GB</p><p><b> ?。?)測(cè)試環(huán)境</b></p><p>  模擬器測(cè)試配置:iOS iPhone 5s </p><p>  iOS版本:iOS 7.1</p&

18、gt;<p><b>  (3)開發(fā)環(huán)境</b></p><p>  1.開發(fā)該軟件使用的開發(fā)工具為Xcode6.0版本。</p><p>  2. 開發(fā)該軟件使用的開發(fā)語(yǔ)言為Objective-C,C語(yǔ)言。</p><p><b>  2.2核心技術(shù)介紹</b></p><p>  

19、本課題是基于iOS技術(shù)利用OC開發(fā)語(yǔ)言實(shí)現(xiàn)的,使用Xcode編程軟件進(jìn)行開發(fā)的,因此我們?cè)谶M(jìn)行開發(fā)之前需要了解OC中內(nèi)存管理機(jī)制、iOS發(fā)展歷程、OC語(yǔ)言以及開發(fā)工具Xcode等等。</p><p>  2.2.1內(nèi)存管理機(jī)制</p><p>  內(nèi)存管理是程序設(shè)計(jì)中常用的資源管理的一部分[8]。每個(gè)計(jì)算機(jī)系統(tǒng)可供程序使用的資源都是有限的,這些資源包括內(nèi)存、打開文件數(shù)量以及網(wǎng)絡(luò)連接等。iO

20、S系統(tǒng)為每個(gè)應(yīng)用程分配30MB的內(nèi)存,超過20MB會(huì)收到內(nèi)存警告,如果超過30MB,系統(tǒng)將會(huì)終止你的應(yīng)用程序,也就是我們熟悉的閃退[2]。因此我們需要時(shí)時(shí)的對(duì)應(yīng)用程序進(jìn)行內(nèi)存管理。</p><p>  在Objective-C中,對(duì)象不斷地被其他對(duì)象創(chuàng)建、使用和銷毀,為了保證程序不產(chǎn)生額外的內(nèi)存開銷,當(dāng)對(duì)象不再需要以后,應(yīng)當(dāng)被立即銷毀,防止內(nèi)存泄露[8]。Objective-C中有一套很完善的內(nèi)存管理機(jī)制,我簡(jiǎn)單

21、地將它歸納為以下幾條:</p><p>  1.對(duì)你自己擁有的對(duì)象負(fù)責(zé)。你只能釋放你擁有的對(duì)象。</p><p>  2.凡是你通過retain,alloc,copy等手段獲得了所有權(quán)的對(duì)象,都必須在你不再使用它的時(shí)候,由你來調(diào)用release,autorelease等手段來釋放對(duì)它的所有權(quán)。</p><p>  3.在一定的代碼段內(nèi),對(duì)同一個(gè)對(duì)象所作的copy,a

22、lloc和retain的操作次數(shù)應(yīng)當(dāng)與release和autorelease操作次數(shù)相同[12]。</p><p>  4.可以在類的dealloc方法中釋放你所占有的實(shí)例變量。</p><p><b>  2.2.2oc語(yǔ)言</b></p><p>  Objective-C是一門面向?qū)ο蟮木幊陶Z(yǔ)言[7]。Objective-C語(yǔ)言具有三大特

23、征:封裝,繼承和多態(tài)[3]。</p><p>  封裝:隱藏內(nèi)部實(shí)現(xiàn),穩(wěn)定外部接口。</p><p>  繼承:子類可以直接復(fù)用父類中的成員。</p><p>  多態(tài):不同對(duì)象對(duì)同一消息的不同響應(yīng)。</p><p><b>  3需求分析</b></p><p>  3.1軟件功能需求分析<

24、;/p><p>  在開發(fā)進(jìn)行之前,我們需要了解我們開發(fā)的項(xiàng)目需要實(shí)現(xiàn)的功能模塊。就本課題來說,視頻播放類的APP,最重要的就是視頻信息的展示、搜索與播放。下面就單個(gè)模塊對(duì)整個(gè)系統(tǒng)實(shí)現(xiàn)進(jìn)行分析。</p><p>  3.1.1視頻信息搜索</p><p>  視頻信息搜索是視頻播放器的功能之一,它主要使用了官方提供的一個(gè)系統(tǒng)類,并通過對(duì)網(wǎng)址url進(jìn)行拼接參數(shù)實(shí)現(xiàn)搜索結(jié)果

25、,進(jìn)行界面展示。</p><p>  用戶可以在搜索欄上輸入自己想要查詢的視頻信息名稱,應(yīng)用程序把用戶輸入的字符作為參數(shù)通過拼接網(wǎng)址傳給服務(wù)器,服務(wù)器會(huì)返回一個(gè)json類型的數(shù)據(jù)字典,這些數(shù)據(jù)是通過NSJSON解析處理后,用一個(gè)collectionView集合視圖來顯示返回來的數(shù)據(jù)并展示在UI界面之上的。</p><p>  3.1.2視頻信息展示</p><p>

26、  視頻信息展示是視頻播放器的主要功能,它主要是根據(jù)網(wǎng)絡(luò)接口數(shù)據(jù)分析解析并通過UI界面布局之后進(jìn)行界面展示。</p><p>  程序啟動(dòng)之后,展示在界面上的就是推薦界面的視頻信息,用戶可以通過點(diǎn)擊進(jìn)入視頻模塊分區(qū)界面。并且根據(jù)自己喜好選擇自己喜歡的視頻信息,進(jìn)行播放。信息展示主要是通過接口請(qǐng)求到數(shù)據(jù)進(jìn)行JSON解析,并將數(shù)據(jù)保存在字典中,啟動(dòng)程序后,就會(huì)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求,回傳到的數(shù)據(jù)展示在UI界面就形成了我們看

27、到的視頻信息。</p><p>  3.1.3視頻信息播放</p><p>  該視頻應(yīng)用是在webView上面進(jìn)行在線播放的APP。</p><p>  用戶點(diǎn)擊視頻信息名稱,應(yīng)用程序把用戶點(diǎn)擊事件獲得的參數(shù)拼接的網(wǎng)址傳給服務(wù)器,服務(wù)器直接訪問對(duì)應(yīng)的播放來源的網(wǎng)站進(jìn)行在線播放。在程序中每個(gè)視頻信息都可以通過點(diǎn)擊事件來響應(yīng)視頻播放的方法。視頻播放主要是通過接口數(shù)據(jù)得

28、到網(wǎng)址信息,并且選擇播放來源時(shí)拼接不同的參數(shù)來實(shí)現(xiàn)在不同網(wǎng)站上播放同一個(gè)視頻信息的功能。</p><p>  3.2軟件可行性分析</p><p>  當(dāng)前社會(huì)是一個(gè)信息化的社會(huì),信息的傳播無(wú)處不在,而且蘋果產(chǎn)品的普及也給該系統(tǒng)提供了很好的推廣前景。就消費(fèi)者而言,蘋果手機(jī)已成為各種消費(fèi)者群體爭(zhēng)先追捧的智能產(chǎn)品。它以及華麗的外形,超高的用戶體驗(yàn)度一直強(qiáng)勢(shì)地占領(lǐng)市場(chǎng)。以此,就社會(huì)性而言,該視頻

29、應(yīng)用是非常合時(shí)宜的。</p><p>  此系統(tǒng)硬件、軟件要求不高,目前市場(chǎng)上的一般計(jì)算機(jī)硬件資源(例如Mac mini)均能滿足系統(tǒng)開發(fā)要求,其中開發(fā)工具為Xcode。系統(tǒng)技術(shù)采用iOS開發(fā)技術(shù),OC開發(fā)語(yǔ)言,擴(kuò)展性強(qiáng)。以上技術(shù)足以完成本系統(tǒng)的開發(fā)與設(shè)計(jì)。</p><p>  本系統(tǒng)的開發(fā)完全可以利用現(xiàn)有硬件條件,不需增加新的硬件設(shè)備。開發(fā)所涉及的軟件使用的均為免費(fèi)版本,開發(fā)后的應(yīng)用免費(fèi)

30、提供給用戶,讓用戶能輕松享受娛樂時(shí)光。系統(tǒng)開發(fā)基本無(wú)需其他開銷,費(fèi)用支出可忽略不計(jì),所以本軟件具有極高的經(jīng)濟(jì)可行性。</p><p><b>  4系統(tǒng)設(shè)計(jì)</b></p><p>  在完成了對(duì)課題的所需技術(shù)介紹以及需求分析之后,我們就要對(duì)系統(tǒng)實(shí)現(xiàn)所需的各種具體類與方法進(jìn)行設(shè)計(jì)。在iOS開發(fā)過程中,我們一般使用MVC框架對(duì)我們的代碼模塊進(jìn)行管理,保證類與類之間不沖突

31、,方法與方法之間可復(fù)用,代碼不冗余。對(duì)于本課題而言,我們主要通過對(duì)使用對(duì)象模型的分析設(shè)計(jì),MVC模式的設(shè)計(jì)來完成系統(tǒng)的設(shè)計(jì)綱要。</p><p><b>  4.1對(duì)象模型</b></p><p>  本課題設(shè)計(jì)的視頻播放器應(yīng)用程序主要由四大對(duì)象UIApplicationMain ,UIApplicationDelegate,UIWindow ,U

32、IViewController組成,具體的介紹及關(guān)系圖如圖4-1所示:</p><p> ?。?)UIApplicationMain </p><p>  在main.m的main函數(shù)中執(zhí)行了UIApplicationMain這個(gè)方法,這是iOS程序的入口點(diǎn)[9]。</p><p> ?。?)UIApplicationDelegate</p>

33、<p>  在開發(fā)過程中,UIApplication是一個(gè)非常重要的全局對(duì)象。但在實(shí)際編程中我們并不直接和UIApplication對(duì)象打交道,而是和其代理打交道,它的代理必須遵循UIApplicationDelegate協(xié)議,代理提供了相關(guān)的生命周期方法來處理應(yīng)用程序的系統(tǒng)事件[9]。</p><p> ?。?) UIWindow </p><p>  U

34、IWindow 是一種特殊的UIView,通常在一個(gè)app中只會(huì)有一個(gè) UIWindow ,但可以手動(dòng)創(chuàng)建多個(gè) UIWindow[10] 。 UIWindow 的主要作用是提供一個(gè)區(qū)域來顯示視圖;將事件分發(fā)給視圖控制器;與UIViewController協(xié)調(diào)工作,方便完成設(shè)備方向旋轉(zhuǎn)的支持。</p><p> ?。?)UIViewControl

35、ler</p><p>  UIViewController屬于MVC模型中的C(Controller),說的具體點(diǎn)是它是一個(gè)視圖控制器,管理著一個(gè)視圖(UIView)[10]。</p><p>  圖4-1 四大對(duì)象關(guān)系圖</p><p><b>  4.2MVC模式</b></p><p>  系統(tǒng)中主要使用MVC模

36、式,MVC模式是Apple iOS開發(fā)需要遵循的設(shè)計(jì)模式[11]。它把一個(gè)頁(yè)面分為三部分。M代表Model,也就是模型,通常是一些模型類(例如LDLModel類),用于存儲(chǔ)數(shù)據(jù)。View代表視圖,用于顯示數(shù)據(jù)。C代表控制器(Controller),用于控制M和V的同步和協(xié)調(diào)。當(dāng)數(shù)據(jù)改變的時(shí)候,要讓視圖顯示更新的數(shù)據(jù)。一個(gè)應(yīng)用程序通常是多個(gè)這樣的頁(yè)面組成。它的優(yōu)點(diǎn)是:</p><p><b>  (1)低

37、耦合性。</b></p><p><b>  (2)重用性高。</b></p><p><b> ?。?)可維護(hù)性好。</b></p><p>  在本系統(tǒng)中就應(yīng)用了MVC設(shè)計(jì)模式對(duì)代碼進(jìn)行封裝和分離,具體MVC結(jié)構(gòu)模型圖如圖4-2所示:</p><p>  圖 4-2 MVC模型關(guān)系圖

38、</p><p><b>  5系統(tǒng)實(shí)現(xiàn)</b></p><p>  通過對(duì)系統(tǒng)實(shí)現(xiàn)需求的設(shè)計(jì),我們大致了解我們開發(fā)所用的類、框架與模型。就進(jìn)入了真正的系統(tǒng)實(shí)現(xiàn)模塊,首先我們要了解在開發(fā)過程中我們所用到的類與類之間的關(guān)系,方便開發(fā)。然后根據(jù)我們需要實(shí)現(xiàn)的功能進(jìn)行代碼的封裝,從而實(shí)現(xiàn)代碼的復(fù)用與模塊化。</p><p>  5.1開發(fā)所用的關(guān)鍵類

39、</p><p>  UI即User Interface(用戶界面)的簡(jiǎn)稱。UI設(shè)計(jì)是指對(duì)軟件的人機(jī)交互、操作邏輯、界面美觀的完整設(shè)計(jì)。UI處于iOS四層結(jié)構(gòu)的最上層(Cocoa Touch),并且放置在UIKit框架下,它跟用戶的操作息息相關(guān),所以包含的控件也特別多[12]。子類與父類之間繼承關(guān)系如圖5-1-1所示:</p><p>  圖 5-1-1 子類與父類之間繼承圖</p&

40、gt;<p>  在本課題的程序?qū)崿F(xiàn)里面主要用到的控件大致如下:</p><p><b> ?。?)顯示類</b></p><p> ?、賃ILabel 展示信息,在應(yīng)用程序中主要用于展示視頻信息等等。</p><p> ?、赨IButton 按鈕,在應(yīng)用程序中只要用于相應(yīng)用戶點(diǎn)擊時(shí)間,比如點(diǎn)擊“更多”按鈕進(jìn)入詳情界面,點(diǎn)擊“歷史

41、記錄”按鈕進(jìn)入觀看歷史記錄界面。</p><p> ?、踀IAlertView 警告視圖,在應(yīng)用程序中主要用于展示刪除的彈窗警告,給用戶更好的體驗(yàn),選擇權(quán)在用戶手中。</p><p> ?、躑IView 視圖,在應(yīng)用程序中主要用于展示視頻信息,并在視圖上進(jìn)行相應(yīng)的操作。</p><p> ?、軺INavigationBar 導(dǎo)航條,在界面上展示導(dǎo)航條的位置,方便我們

42、根據(jù)導(dǎo)航控制器來控制界面跳轉(zhuǎn)及操作。</p><p> ?、轚ITableView 表視圖,在應(yīng)用程序中主要在單元格上展示視頻信息,設(shè)置信息等等。</p><p> ?、遀ICollectionView 集合視圖,在應(yīng)用程序的推薦界面和分類界面都是集合視圖來展示分區(qū)信息。</p><p> ?、郩IImageView 圖片視圖,在應(yīng)用程序中有圖片的展示信息都是加載在

43、UIImageView視圖之上的。</p><p> ?、酻IScrollView 滾動(dòng)視圖,在應(yīng)用程序主界面輪播圖是使用UIScrollView和UIPageControl控件實(shí)現(xiàn)的。</p><p> ?、釻IWebView 網(wǎng)頁(yè)視圖,在應(yīng)用程序中視頻播放界面是UIWebView加載實(shí)現(xiàn)的。</p><p><b> ?。?)功能類使用</b&g

44、t;</p><p> ?、貼SDate 處理日期和時(shí)間,在應(yīng)用程序中顯示時(shí)間和刷新時(shí)間。</p><p> ?、贜STimer 定時(shí)器,在應(yīng)用程序中添加動(dòng)畫效果開始時(shí)間,添加定時(shí)器。</p><p> ?、跱SURL 網(wǎng)絡(luò)路徑,在應(yīng)用程序中封裝網(wǎng)絡(luò)路徑。</p><p> ?、躈SURLRequest 網(wǎng)絡(luò)請(qǐng)求,在應(yīng)用程序中設(shè)置一些網(wǎng)絡(luò)的請(qǐng)

45、求信息。</p><p> ?、軳SError 在應(yīng)用程序中使用到是用來接收網(wǎng)絡(luò)請(qǐng)求中的錯(cuò)誤信息。</p><p> ?、轓SData 數(shù)據(jù),在應(yīng)用程序中把一些信息寫入到文件里或發(fā)送到網(wǎng)絡(luò)上,我們需要把這些數(shù)據(jù)轉(zhuǎn)換下,變成純粹的0、1字符流使用到NSData類。</p><p>  ⑦NSNotification 通知,在應(yīng)用程序中用于界面?zhèn)鬟f信息,在播放界面和歷

46、史記錄界面有使用到通知的發(fā)送和接收。</p><p> ?、郚SJSONSerialization 數(shù)據(jù)解析,在應(yīng)用程序中主要用于解析網(wǎng)絡(luò)數(shù)據(jù),主要分為XML和JSON解析,在應(yīng)用程序中主要用到JSON解析數(shù)據(jù)。</p><p> ?、酦SOperationQueue 隊(duì)列,在應(yīng)用程序中主要用于對(duì)對(duì)象進(jìn)行隊(duì)列操作。</p><p>  5.2應(yīng)用程序編碼實(shí)現(xiàn)<

47、/p><p>  應(yīng)用程序是我們通過編碼實(shí)現(xiàn)UI界面展示,響應(yīng)并處理用戶事件的最重要的一部分,幾乎所有的功能實(shí)現(xiàn)都是基于代碼的書寫來完成的。下面就應(yīng)用程序的工作流程、編碼實(shí)現(xiàn)進(jìn)行介紹。</p><p>  5.2.1應(yīng)用程序工作流程</p><p>  應(yīng)用程序是基于iOS技術(shù)開發(fā)實(shí)現(xiàn)的,根據(jù)需求,我們需要設(shè)計(jì)包含主界面以及很多的子類界面。主界面有:推薦界面、分類界面、

48、搜索界面、設(shè)置界面。子類界面有分類詳情界面、劇集選擇界面、播放界面、歷史記錄界面等等。主界面之間實(shí)現(xiàn)用戶對(duì)視頻信息的選擇與展示,并響應(yīng)用戶點(diǎn)擊事件。例如:用戶點(diǎn)擊每個(gè)集合視圖的item時(shí)可以跳轉(zhuǎn)到模塊分類詳情界面;點(diǎn)擊模塊分類詳情界面會(huì)跳轉(zhuǎn)到視頻信息詳情界面,并選擇劇集實(shí)現(xiàn)播放視頻的功能。主頁(yè)面主要負(fù)責(zé)整個(gè)應(yīng)用程序的視頻信息,通過添加手勢(shì)來實(shí)現(xiàn)與下級(jí)界面的交互,它的信息播放以及視頻信息詳情展示都由下級(jí)頁(yè)面來完成。整個(gè)界面看起來美觀簡(jiǎn)潔,

49、使得用戶使用起來一目了然。而且通過界面代碼實(shí)現(xiàn)的復(fù)用,很好的降低代碼冗余,使得程序運(yùn)行更加流暢,占據(jù)內(nèi)存空間更小。</p><p>  根據(jù)上面的詳細(xì)的介紹,我們大概有所了解客戶端的整的整個(gè)流程??蛻舳说牧鞒虉D如4-2-1圖所示:</p><p>  圖 4-2-1 視頻播放流程圖</p><p>  5.2.2應(yīng)用程序管理類</p><p>

50、;  (1)管理類 LDLManager</p><p>  在程序運(yùn)行中很多地方要使用到網(wǎng)絡(luò)數(shù)據(jù)處理,通過實(shí)現(xiàn)一次代碼書寫多處模塊復(fù)用的功能,這就是OC語(yǔ)言封裝的概念的具體體現(xiàn)。下面的代碼就是實(shí)現(xiàn)文件歸檔保存數(shù)據(jù)的方法的聲明。具體在需要用到將數(shù)據(jù)保存在本地的模塊調(diào)用這個(gè)方法即可。</p><p>  typedef enum {</p><p>  ModelPa

51、ckageTypeRefresh,//刷新數(shù)據(jù)</p><p>  ModelPackageTypeLoadingMore//加載更多</p><p>  }ModelPackageType;</p><p>  + (id)manager;</p><p><b>  //沙盒存儲(chǔ)</b></p><

52、;p>  - (NSString *)filePath:(NSString *)string;//歸檔文件的保存路徑</p><p>  - (void)save:(NSString *)string;//保存數(shù)據(jù)到硬盤的方法</p><p>  + (id)manager;方法是一個(gè)便利構(gòu)造器方法,表明manager這個(gè)對(duì)象在程序運(yùn)行過程中一直存在,不被銷毀。</p>

53、<p>  - (NSString *)filePath:(NSString *)string;//歸檔文件的保存路徑</p><p>  - (void)save:(NSString *)string;//保存數(shù)據(jù)到硬盤的方法</p><p>  以上兩個(gè)方法實(shí)現(xiàn)將數(shù)據(jù)保存在本地,歸檔保存,實(shí)現(xiàn)數(shù)據(jù)持久化。</p><p> ?。?)LDLBaseMo

54、del類,繼承自NSObject</p><p>  在數(shù)據(jù)處理時(shí),很多時(shí)候網(wǎng)絡(luò)接口返回的數(shù)據(jù)都是字典類型,聲明一個(gè)字典的初始化以及便利構(gòu)造器方法,使得在要將數(shù)據(jù)存儲(chǔ)在字典里時(shí)直接調(diào)用LDLBaseModel這個(gè)類封裝的字典方法,避免使用一次就初始化一次,減少代碼冗余。封裝方法字典保存數(shù)據(jù),為之后網(wǎng)絡(luò)數(shù)據(jù)解析與封裝做鋪墊,并且有利于代碼的復(fù)用。</p><p>  @interface L

55、DLBaseModel : NSObject</p><p>  - (id)initWithDictionary:(NSDictionary *)dictionary;</p><p>  + (id)modelWithDictioanry:(NSDictionary *)dictionary;</p><p>  - (id)initWithDictionary

56、:(NSDictionary *)dictionary {</p><p>  if (self = [super init]) {</p><p><b>  }</b></p><p>  return self;</p><p><b>  }</b></p><p>

57、  + (id)modelWithDictioanry:(NSDictionary *)dictionary {</p><p>  return [[[[self class] alloc] initWithDictionary:dictionary] autorelease];</p><p><b>  }</b></p><p><

58、;b>  @end</b></p><p>  5.2.3應(yīng)用程序工具類</p><p>  iOS中提供了一個(gè)工具條類,通過它我們可以管理導(dǎo)航控制器,而每個(gè)導(dǎo)航控制器管理一個(gè)視圖控制器,所以我們一般用它來管理整個(gè)應(yīng)用程序的使用流程。本應(yīng)用軟件共有四大模塊,名稱分別為:推薦、分類、搜索、設(shè)置。一下代碼分別實(shí)現(xiàn)的是添加視圖控制器,并且設(shè)置tabBar為window的根視圖控

59、制器。為之后界面跳轉(zhuǎn)以及選擇提供方便。代碼如下:</p><p>  LDLRecommendTableViewController *recommendVC = [[LDLRecommendTableViewController alloc] initWithStyle:UITableViewStylePlain];</p><p>  UINavigationController *r

60、ecommendNC = [[UINavigationController alloc] initWithRootViewController:recommendVC];</p><p>  [recommendVC release];</p><p>  recommendNC.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"

61、推薦" image:[[UIImage imageNamed:@"tabbtn_home"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"tabbtn_home_selected"] imageWithRenderingMode:UIImag

62、eRenderingModeAlwaysOriginal]];</p><p>  UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];</p><p>  layout.itemSize = CGSizeMake(90, 170);</p><p>  lay

63、out.sectionInset = UIEdgeInsetsMake(5, 10, 0, 10);</p><p>  LDLClassifyViewController *classifyVC = [[LDLClassifyViewController alloc] initWithCollectionViewLayout:layout];</p><p>  classifyVC.c

64、ollectionView.backgroundColor = [UIColor colorWithRed:220/ 255.0 green:220 / 255.0 blue:220 / 255.0 alpha:1];</p><p>  [layout release];</p><p>  UINavigationController *classifyNC = [[UINavigat

65、ionController alloc] initWithRootViewController:classifyVC];</p><p>  [classifyVC release];</p><p>  classifyNC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"分類" image:[[UIImage i

66、mageNamed:@"tabbtn_cat"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"tabbtn_cat_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal

67、]];</p><p>  LDLSearchViewController *searchVC = [[LDLSearchViewController alloc] init];</p><p>  UINavigationController *searchNC = [[UINavigationController alloc] initWithRootViewController:se

68、archVC];</p><p>  [searchVC release];</p><p>  searchNC.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"搜索" image:[[UIImage imageNamed:@"tabbtn_search"] imageWithRenderingM

69、ode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"tabbtn_search_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];</p><p>  LDLSettingTableViewContro

70、ller *settingVC = [[LDLSettingTableViewController alloc] initWithStyle:UITableViewStyleGrouped];</p><p>  UINavigationController *settingNC = [[UINavigationController alloc] initWithRootViewController:settin

71、gVC];</p><p>  [settingVC release];</p><p>  settingNC.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"設(shè)置" image:[[UIImage imageNamed:@"tabbtn_more"] imageWithRenderingMode

72、:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"tabbtn_more_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];</p><p>  UITabBarController *tabBar = [

73、[UITabBarController alloc] init];</p><p>  tabBar.viewControllers = @[recommendNC, classifyNC, searchNC, settingNC];</p><p>  self.window.rootViewController = tabBar;</p><p>  [tabB

74、ar release]; </p><p>  5.2.4應(yīng)用程序功能實(shí)現(xiàn)</p><p>  iOS開發(fā)中常用到的消息傳遞或傳值有屬性傳值,通知等等[13]。通知是iOS開發(fā)框架中的一種設(shè)計(jì)模式,內(nèi)部的實(shí)現(xiàn)機(jī)制由Cocoa框架支持,通常用于控制視圖和模型的交互[14]。NSNotification對(duì)象非常簡(jiǎn)單。它就是poster要提供給observer

75、的信息包裹。它的對(duì)象包含一個(gè)參數(shù),就是字典(可選參數(shù)),這個(gè)字典中存儲(chǔ)一些傳值過程中的信息。這就是通知實(shí)現(xiàn)的原理,也是界面之間功能實(shí)現(xiàn)傳值的原理。</p><p>  在該項(xiàng)目中就用到了兩種傳值方式。上述代碼是實(shí)現(xiàn)通知傳遞消息,在要監(jiān)聽的界面發(fā)送通知,在要接收的界面接收通知,這點(diǎn)在歷史記錄界面也有用到。示例代碼如下:</p><p>  - (void)viewDidLoad</p&

76、gt;<p><b>  {</b></p><p>  [super viewDidLoad];</p><p>  [self addHeader];</p><p>  [self _setupNavigationBar];</p><p>  [[LDLManager manager] packag

77、eModelWithType:ModelPackageTypeRefresh withURLString:@"http://tv.luckyamy.com/index/?app=jiji126&ver=1.1" withIdentifier:@"TuiJian"];</p><p>  //讓當(dāng)前視圖控制器成為通知的觀察者</p><p> 

78、 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshUserInterface) name:kModelsDidFinishPackingNotification object:nil];</p><p>  [self.tableView registerClass:[LDLTableViewCell

79、 class] forCellReuseIdentifier:@"tableViewCell"];</p><p>  [self.tableView registerClass:[ScrollCell class] forCellReuseIdentifier:@"ScrollCell"];</p><p><b>  }</b&g

80、t;</p><p>  - (void)refreshUserInterface {</p><p>  self.dataSource = [[LDLManager manager] dataSource][@"TuiJian"];</p><p>  [self.tableView reloadData];</p><p

81、><b>  }</b></p><p>  5.2.5應(yīng)用程序界面實(shí)現(xiàn)</p><p><b> ?。?)網(wǎng)絡(luò)數(shù)據(jù)處理</b></p><p>  應(yīng)用程序中通過響應(yīng)用戶點(diǎn)擊事件,并通過的封裝網(wǎng)絡(luò)請(qǐng)求方法實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求事件處理的復(fù)用,完成各個(gè)模塊的網(wǎng)絡(luò)請(qǐng)求。通過對(duì)點(diǎn)擊事件的處理,獲取點(diǎn)擊事件的參數(shù)拼接到網(wǎng)址之中,并且

82、對(duì)于網(wǎng)絡(luò)數(shù)據(jù)的請(qǐng)求處理進(jìn)行分類,對(duì)于數(shù)據(jù)接口返回的數(shù)據(jù),使用NSJSON解析并將數(shù)據(jù)保存在字典中。方便我們對(duì)于數(shù)據(jù)進(jìn)行層層處理,并且根據(jù)請(qǐng)求方式不同改變參數(shù)。示例代碼如下:</p><p>  NetworkManager *network = [NetworkManager managerWithDelegate:self];</p><p>  network.HTTPType = @

83、"GET";</p><p>  network.URLString = [NSString stringWithFormat:@"http://tv.luckyamy.com/videos/?app=jiji126&type=%@&id=%@&ver=1.1", model.category, model.ID];</p><p

84、>  [network startAcquire];</p><p>  對(duì)網(wǎng)絡(luò)數(shù)據(jù)解析,調(diào)用系統(tǒng)的NSJSONSerialization類來對(duì)數(shù)據(jù)進(jìn)行解析,得到的數(shù)據(jù)保存在字典中,在根據(jù)所用屬性遍歷字典完成對(duì)數(shù)據(jù)的封裝,按照封裝的Model類填充單元格,并展示在UI界面上。示例代碼如下:</p><p>  -(void)manager:(NetworkManager *)mana

85、ger didFinishLoadingWithInfo:(id)info {</p><p>  NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:info options:NSJSONReadingMutableContainers error:nil];</p><p>  NSLog(@"%@&

86、quot;, jsonDic);</p><p>  if ([jsonDic[@"episodes"] count] == 0) {</p><p>  for (NSDictionary *dic in jsonDic[@"recommends"]) {</p><p>  LDLMovie *model = [LDLMo

87、vie modelWithDictioanry:dic];</p><p>  [self.dataSource addObject:model];</p><p><b>  }</b></p><p>  (2)上提加載下拉刷新數(shù)據(jù)</p><p>  應(yīng)用程序中通過上提加載或者下拉刷新而實(shí)現(xiàn)數(shù)據(jù)加載更多的功能,并通

88、過MJRefresh實(shí)現(xiàn)刷新事件,完成各個(gè)模塊的刷新事件的實(shí)現(xiàn)。通過對(duì)下拉界面或者上提界面判斷距離頭部或者底部的距離來響應(yīng)刷新事件,從而實(shí)現(xiàn)加載更多數(shù)據(jù)的功能。在使用中引入MJRefresh這個(gè)類到要添加刷新事件的類的頭文件中,在viewDidLoad方法中調(diào)用這個(gè)類方法即可。示例代碼如下:</p><p><b>  //下拉刷新</b></p><p>  - (

89、void)addHeader</p><p><b>  {</b></p><p>  __unsafe_unretained typeof(self) vc = self;</p><p>  // 添加下拉刷新頭部控件</p><p>  [self.tableView addHeaderWithCallback:

90、^{</p><p>  // 進(jìn)入刷新狀態(tài)就會(huì)回調(diào)這個(gè)Block</p><p>  [[LDLManager manager] packageModelWithType:ModelPackageTypeRefresh withURLString:@"http://tv.luckyamy.com/index/?app=jiji126&ver=1.1" with

91、Identifier:@"TuiJian"];</p><p>  // 模擬延遲加載數(shù)據(jù),因此2秒后才調(diào)用)</p><p>  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{</p>

92、<p>  [self refreshUserInterface];</p><p><b>  // 結(jié)束刷新</b></p><p>  [vc.tableView headerEndRefreshing];</p><p><b>  });</b></p><p><b&g

93、t;  }];</b></p><p>  [self.tableView headerBeginRefreshing];</p><p><b>  }</b></p><p><b>  //上提加載</b></p><p>  - (void)addFooter</p>

94、<p><b>  {</b></p><p>  __unsafe_unretained typeof(self) vc = self;</p><p>  // 添加上拉刷新尾部控件</p><p>  [self.collectionView addFooterWithCallback:^{</p><p

95、>  // 進(jìn)入刷新狀態(tài)就會(huì)回調(diào)這個(gè)Block</p><p>  // 增加5條假數(shù)據(jù)</p><p>  self.flag = ModelPackageTypeLoadingMore;</p><p>  self.pageNumber++;</p><p>  [self handleAction:self.segment];&

96、lt;/p><p>  // 模擬延遲加載數(shù)據(jù),因此2秒后才調(diào)用)</p><p>  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{</p><p>  [self refreshUserInter

97、face];</p><p><b>  // 結(jié)束刷新</b></p><p>  [vc.collectionView footerEndRefreshing];</p><p><b>  });</b></p><p><b>  }];</b></p>

98、<p><b>  }</b></p><p>  5.3應(yīng)用程序模塊實(shí)現(xiàn)</p><p>  該視頻播放器實(shí)現(xiàn)總共分為四個(gè)模塊,主要為主頁(yè)推薦,分類詳情,搜索更多以及設(shè)置四個(gè)界面,通過編碼的實(shí)現(xiàn)與調(diào)試,我們基本已實(shí)現(xiàn)各個(gè)界面的功能展示。具體界面截圖如圖5-3-1,5-3-2,5-3-3,5-3-4所示:</p><p>  5-3-

99、1 推薦詳情界面 </p><p>  推薦界面即程序運(yùn)行出來的主界面。主要進(jìn)行電視劇,電影等等視頻信息的分區(qū)展示。上部有一個(gè)輪播圖,主要展示最近熱播的電視劇或者電影信息。在整個(gè)界面上添加手勢(shì)功能,對(duì)每個(gè)分區(qū)可以進(jìn)行橫向滑動(dòng)來查看更多的分區(qū)信息。例如電視劇分區(qū),可以向右滑動(dòng),查看最近熱播的電視劇信息。</p><p>  5-3-2 分類詳情界面</p><p> 

100、 分類界面就是下面工具欄的第二個(gè)按鈕控制的界面。這個(gè)界面主要展示以一個(gè)視頻信息為代表的不同分區(qū)的信息。用戶可以通過點(diǎn)擊實(shí)現(xiàn)每個(gè)分區(qū)詳情的查看,選擇自己喜歡的視頻信息進(jìn)行播放。</p><p>  5-3-3 搜索更多界面</p><p>  搜索界面是添加一個(gè)比較炫酷的第三方類來展示最近搜索詞。用戶可以通過點(diǎn)擊導(dǎo)航條上部的搜索框輸入查找內(nèi)容進(jìn)行搜索自己想要查找的視頻或者是通過點(diǎn)擊熱門搜索詞

101、來查找相關(guān)視頻信息。3D效果選擇球,用戶體驗(yàn)度高。</p><p>  3-2-1-4 設(shè)置界面</p><p>  設(shè)置界面是一個(gè)表視圖進(jìn)行展示設(shè)置信息。通過點(diǎn)擊不同的單元格,可以完成對(duì)于的操作。由于這款應(yīng)用在模擬器上完成,因此在意見反饋欄點(diǎn)擊時(shí)會(huì)彈窗警告。</p><p><b>  6系統(tǒng)測(cè)試</b></p><p&g

102、t;  至此我們的開發(fā)流程基本完成,就需要對(duì)我們的應(yīng)用程序進(jìn)行測(cè)試,來發(fā)現(xiàn)應(yīng)用程序中存在的問題,從而完善我們的應(yīng)用程序,使得用戶體驗(yàn)更加完美。</p><p>  系統(tǒng)運(yùn)行的流程如下:</p><p> ?、俪绦蜻\(yùn)行后,首先進(jìn)入的是主界面,即推薦界面,展示最近熱播的電視劇電影等等視頻信息。輪播圖展示最近熱門排行的電影電視劇。</p><p> ?、诋?dāng)選擇推薦界面更多

103、按鈕,進(jìn)入具體分區(qū)的詳情界面。例如,點(diǎn)擊電視劇分區(qū)后“更多”按鈕,跳轉(zhuǎn)進(jìn)入詳情界面,使得我們對(duì)于分區(qū)信息的了解更加豐富。</p><p> ?、圻M(jìn)入詳情界面之后可以點(diǎn)擊每個(gè)詳細(xì)視頻信息,例如,電影界面點(diǎn)擊之后,進(jìn)入播放詳情界面,可以選擇視頻信息播放來源以及視頻信息相關(guān)推薦等等。</p><p> ?、茳c(diǎn)擊“詳情”按鈕,進(jìn)入視頻詳情界面,在此我們可以查看有關(guān)這個(gè)視頻信息的詳細(xì)介紹。</

104、p><p>  ⑤點(diǎn)擊返回鍵后返回視頻詳情界面,選擇劇集和播放源,進(jìn)入播放界面。</p><p><b>  致謝</b></p><p>  本課題在選題以及進(jìn)行過程中都少不了指導(dǎo)老師邢靜宇老師的悉心指導(dǎo)。邢老師熱心的態(tài)度讓我對(duì)于畢業(yè)設(shè)計(jì)的迷茫消失了不少,她踏實(shí)的工作精神,也是我以后工作學(xué)習(xí)的榜樣。她的多次幫助,使得我對(duì)于處理困難事情的能力提升了

105、不少,在我內(nèi)心里真的非常感謝。在此,謹(jǐn)向邢老師表示誠(chéng)摯的感謝。</p><p>  大學(xué)四年以來,有快樂也有艱辛。學(xué)院全體老師對(duì)我們孜孜不倦的教誨,感謝班級(jí)同學(xué)們對(duì)我的關(guān)懷與幫助,四年感情,不是親情,勝似親情。我們一起走過很多快樂的日子,這是我十幾年求學(xué)生涯中永遠(yuǎn)不會(huì)忘記的回憶。</p><p>  大學(xué)生活即將隨著論文的完成畫上圓滿的句號(hào)。感謝四年以來遇到的所有給我?guī)椭完P(guān)注的朋友們,因

106、為你們才有了今天成熟堅(jiān)強(qiáng)足以應(yīng)對(duì)未來一切考驗(yàn)的我的成長(zhǎng)。相信在未來的日子里,我一定會(huì)時(shí)時(shí)想起這些美好的日子,這也將會(huì)是我人生中一筆重要的財(cái)富。</p><p><b>  參考文獻(xiàn)</b></p><p>  Dave Mark,Jeff LaMarche. iPhone開發(fā)基礎(chǔ)教程[M]. 北京:人民郵電出版社. 2009.</p

107、><p>  Erica Sadun. iPhone開發(fā)秘籍(第2版)[M].北京: 人民郵電出版社. 2010.</p><p>  唐巧.  iOS開發(fā)進(jìn)階[M].北京: 電子工業(yè)出版社 .2015. </p><p>  Maurice Sharp,Erica Sadun,Rod St

108、ro.使用iOS開發(fā)完全上手[M]. 北京:清華大學(xué)出版社. 2014</p><p>  關(guān)東升.  iOS開發(fā)指南(從零基礎(chǔ)到APP Store上架第二版)[M]. 2014</p><p>  克納斯特,馬利克,達(dá)爾林普爾.Objective-C基礎(chǔ)教程[M]. 北京: 人民郵電出版社.2013.</p><p&g

109、t;  坂本一樹,古本智彥. Objective-C高級(jí)編程[M].北京: 人民郵電出版社.2013.</p><p>  劉威. Objective-C編程之道:iOS設(shè)計(jì)模式解析[M].北京: 人民郵電出版社.2011.</p><p>  張才千,郭毅鵬,李梓萌.iOS開發(fā)從入門到精通[M]. 北京: 北京希望電子出版社. 2014</p

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論