畢業(yè)論文(設(shè)計(jì)):基于IOS影視信息手機(jī)客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)13497_第1頁(yè)
畢業(yè)論文(設(shè)計(jì)):基于IOS影視信息手機(jī)客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)13497_第2頁(yè)
畢業(yè)論文(設(shè)計(jì)):基于IOS影視信息手機(jī)客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)13497_第3頁(yè)
畢業(yè)論文(設(shè)計(jì)):基于IOS影視信息手機(jī)客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)13497_第4頁(yè)
畢業(yè)論文(設(shè)計(jì)):基于IOS影視信息手機(jī)客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)13497_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 學(xué)科分類(lèi)號(hào) 0810 本科學(xué)生畢業(yè)論文(設(shè)計(jì)) 題目(中文):基于ios影視信息手機(jī)客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn) (英文):the designing and implementation of phone movie imformation client module based on ios 姓 名 譚小清 學(xué) 號(hào) 200908002213 院 (系) 計(jì)算機(jī)與通信工程系 專(zhuān)業(yè)、年級(jí) 通信工程專(zhuān)業(yè) 2009級(jí) 指導(dǎo)老師 李文(講師) 2013年 4 月 18 日基于ios影視信息手機(jī)客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)摘 要隨著信息網(wǎng)絡(luò)時(shí)代的快速發(fā)展,手機(jī)使用方式的多樣化,智能手機(jī)以及移動(dòng)互聯(lián)網(wǎng)應(yīng)用的普及,不斷地改

2、變著人們的生活方式。一款好的應(yīng)用軟件成為手機(jī)必備,本設(shè)計(jì)主要基于ios平臺(tái)實(shí)現(xiàn)了iphone客戶(hù)端查看影視訊息的功能,通過(guò)此款應(yīng)用可以查看當(dāng)前最新影片的簡(jiǎn)介、評(píng)論、評(píng)分等等。本設(shè)計(jì)采用x-code開(kāi)發(fā)工具,它具有可視化的編程界面、詳細(xì)的提示、以及完善的幫助文檔,軟件開(kāi)發(fā)人員使用起來(lái)非常方便。本設(shè)計(jì)首先概要性地介紹了本文使用的關(guān)鍵技術(shù)、mvc模式等;然后給出模塊端總體分析與設(shè)計(jì),包括系統(tǒng)的需求分析、系統(tǒng)設(shè)計(jì)要求、系統(tǒng)總體功能設(shè)計(jì);其次用圖表加文字的方式對(duì)設(shè)計(jì)工作中的重點(diǎn)部分做出了詳細(xì)地闡述;最后具體描述了模塊的實(shí)現(xiàn)過(guò)程,并對(duì)關(guān)鍵技術(shù)的實(shí)現(xiàn),進(jìn)行了代碼解析?!娟P(guān)鍵詞】影視信息;ios;iphone

3、;josn;服務(wù)器 the designing and implementation of phone movie imformation based on iosabstractwith the rapid development of information network era, the diversification of mobile phone use, intelligent mobile phone and the popularity of mobile internet applications, constantly changing people's way

4、of life. a good mobile phone application software become necessary, this design is mainly based on the ios platform of the iphone client to view video message function, through this application can view the latest movie introduction, review, scoring and so on.this design uses the x-code development

5、tools, it has the visual programming interface, detailed tips and perfect help documentation, it is very convenient to use for software developers. this paper firstly briefly introduces the keytechnologies and the mvc mode, secondly gives the total analysis and design of terminal module, including s

6、ystem requirements analysis, system design and system function design; next gives the figures and text of key parts design; at last this paper petends the concrete description of the module realization process, at the same time the key technique codes are provided and analized.【key words】movie imfor

7、mation;ios;iphone;json;sever目 錄1 緒 論11.1 本課題背景及意義11.2 國(guó)內(nèi)外研究現(xiàn)狀11.3 本課題的研究?jī)?nèi)容21.4 本章小結(jié)32 ios、開(kāi)發(fā)語(yǔ)言、環(huán)境以及所用技術(shù)介紹32.1 ios簡(jiǎn)介32.2開(kāi)發(fā)語(yǔ)言objective-c32.3 開(kāi)發(fā)環(huán)境42.4 應(yīng)用程序框架以及設(shè)計(jì)模式52.5 第三方類(lèi)庫(kù)72.6 本章小結(jié)83 功能模塊設(shè)計(jì)103.1 需求分析103.2系統(tǒng)模塊設(shè)計(jì)113.3 登錄模塊和手勢(shì)交互模塊流程圖設(shè)計(jì)113.3.1 用戶(hù)登錄模塊設(shè)計(jì)113.3.2 手勢(shì)交互設(shè)計(jì)123.3.3 多點(diǎn)觸摸交互設(shè)計(jì)123.4 詳細(xì)設(shè)計(jì)123.4.1 選擇的控件

8、133.4.2 界面的繪制143.4.3 數(shù)據(jù)輸入與傳遞143.4.4 數(shù)據(jù)的保存和顯示153.4.5 自動(dòng)登錄153.5 本章小結(jié)164 功能模塊的具體實(shí)現(xiàn)174.1 數(shù)據(jù)請(qǐng)求174.2 網(wǎng)絡(luò)判斷174.3 數(shù)據(jù)的解析184.4 代理的實(shí)現(xiàn)194.5 算法描述與實(shí)現(xiàn)204.6 本章小結(jié)225 數(shù)據(jù)測(cè)試235.1 影視信息列表頁(yè)數(shù)據(jù)測(cè)試235.2 具體內(nèi)容頁(yè)數(shù)據(jù)測(cè)試245.3 評(píng)論頁(yè)及回復(fù)頁(yè)數(shù)據(jù)的測(cè)試255.4 登錄測(cè)試265.5 本章總結(jié)276 總結(jié)和展望286.1 總結(jié)286.2 展望28參考文獻(xiàn)29致 謝301 緒 論隨著信息網(wǎng)絡(luò)時(shí)代的快速發(fā)展,手機(jī)使用方式的多樣化,智能手機(jī)以及移動(dòng)互聯(lián)

9、網(wǎng)應(yīng)用的普及,不斷地改變著人們的生活方式。一款好的應(yīng)用軟件成為手機(jī)必備,本設(shè)計(jì)主要基于ios平臺(tái)實(shí)現(xiàn)了iphone客戶(hù)端查看影視訊息的功能,通過(guò)此款應(yīng)用可以查看當(dāng)前最新影片的簡(jiǎn)介、評(píng)論、評(píng)分等等。本設(shè)計(jì)采用x-code開(kāi)發(fā)工具,它具有可視化的編程界面、詳細(xì)的提示、以及完善的幫助文檔,軟件開(kāi)發(fā)人員使用起來(lái)非常方便。本設(shè)計(jì)首先概要性地介紹了本文使用的關(guān)鍵技術(shù)、mvc模式等;然后給出模塊端總體分析與設(shè)計(jì),包括系統(tǒng)的需求分析、系統(tǒng)設(shè)計(jì)要求、系統(tǒng)總體功能設(shè)計(jì);其次用圖表加文字的方式對(duì)設(shè)計(jì)工作中的重點(diǎn)部分做出了詳細(xì)地闡述;最后具體描述了模塊的實(shí)現(xiàn)過(guò)程,并對(duì)關(guān)鍵技術(shù)的實(shí)現(xiàn),進(jìn)行了代碼解析。1.1 課題背景及

10、意義 當(dāng)今社會(huì),手機(jī)已經(jīng)成為人們生活必不可少的一部分,而隨著科技的進(jìn)步,手機(jī)已經(jīng)不再僅僅是只是一個(gè)簡(jiǎn)單的通話(huà)工具了,手機(jī)日趨于智能化、定制化、網(wǎng)絡(luò)化、娛樂(lè)多媒體化、安全性。伴隨著3g技術(shù)的日益成熟和3g手機(jī)的普及,手機(jī)網(wǎng)絡(luò)化更是成為引人注目的焦點(diǎn),移動(dòng)互聯(lián)網(wǎng)已經(jīng)成為未來(lái)發(fā)展的一個(gè)主流趨勢(shì)為業(yè)界所認(rèn)可,手機(jī)作為人們使用最廣泛的移動(dòng)信息終端在未來(lái)移動(dòng)互聯(lián)網(wǎng)中地位舉足輕重。未來(lái)手機(jī)將成為最主要的移動(dòng)互聯(lián)網(wǎng)的使用終端,以后在移動(dòng)互聯(lián)網(wǎng)實(shí)現(xiàn)的包羅萬(wàn)象的服務(wù)都會(huì)以手機(jī)為載體。在此基礎(chǔ)上,以手機(jī)作為客戶(hù)端的網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā),引起越來(lái)越多人的關(guān)注。iphone手機(jī)軟件開(kāi)發(fā)代表了未來(lái)開(kāi)發(fā)領(lǐng)域的新方向,隨著iph

11、one應(yīng)用需求的增加,只要iphone手機(jī)軟件開(kāi)發(fā)應(yīng)用夠創(chuàng)意、夠?qū)嵱茫湍軌颢@得豐厚的回報(bào)全球越來(lái)越多的開(kāi)發(fā)者們投身其中,中國(guó)的iphone手機(jī)軟件開(kāi)發(fā)者也不甘心置身局外,由此看來(lái)iphone軟件業(yè)的發(fā)展形勢(shì)非常樂(lè)觀,但是由于語(yǔ)言方面的限制,在中國(guó),iphone的軟件開(kāi)發(fā)工作還處于緩慢上升階段,這意味著市場(chǎng)非常龐大,完全有上升和提高的空間,并且,隨著人們生活節(jié)奏的提高,更加注重跟上時(shí)代腳步,完全不滿(mǎn)足于現(xiàn)在獲取影訊的方式,這無(wú)疑對(duì)信息的傳播方式提出了更高的要求。1.2 國(guó)內(nèi)外的研究現(xiàn)狀手機(jī)與互聯(lián)網(wǎng)的融合形成的移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)是與傳統(tǒng)互聯(lián)網(wǎng)以及傳統(tǒng)移動(dòng)通信業(yè)務(wù)完全不同的新型業(yè)務(wù),移動(dòng)互聯(lián)網(wǎng)催生的新

12、型需求日益成為傳統(tǒng)it與通信巨頭的藍(lán)海。隨著社會(huì)的不斷發(fā)展,各種各樣的手機(jī)軟件參與了人類(lèi)的活動(dòng)和社會(huì)活動(dòng),因此改善人和人之間的關(guān)系,使人對(duì)人的交流更為廣泛。還可以促進(jìn)大腦智力的發(fā)展,讓人們的思維更活躍?,F(xiàn)今,人類(lèi)己進(jìn)入了信息化網(wǎng)絡(luò)3g時(shí)代,手機(jī)的應(yīng)用范圍越來(lái)越廣泛。根據(jù)摩根士丹利的一份報(bào)告,未來(lái)5年移動(dòng)互聯(lián)網(wǎng)的人數(shù)將超過(guò)傳統(tǒng)互聯(lián)網(wǎng)。移動(dòng)互聯(lián)網(wǎng)是一塊巨大的金礦等待開(kāi)采。iphone是蘋(píng)果公司推出的一款手機(jī)平臺(tái),其特點(diǎn)是封閉平臺(tái),由蘋(píng)果推出統(tǒng)一api,編程語(yǔ)言采用object-c,c語(yǔ)言的編程效率還是相當(dāng)高。目前蘋(píng)果的iphone已經(jīng)取得很大成功,其推出的軟件商店模式也使得開(kāi)發(fā)者大量參與進(jìn)來(lái),極大

13、豐富了iphone的功能,也使開(kāi)發(fā)者有了致富機(jī)會(huì),而在中國(guó),移動(dòng)、電信、聯(lián)通紛紛推出自己的應(yīng)用程序商店,并不只為效仿蘋(píng)果app store的商業(yè)模式,更多的是看到豐富的應(yīng)用程序在未來(lái)將成為用戶(hù)選擇運(yùn)營(yíng)商和手機(jī)平臺(tái)的決定因素;而對(duì)于開(kāi)發(fā)者來(lái)說(shuō),手機(jī)軟件商店開(kāi)發(fā)者分成模式將 成為他們的另一個(gè)金礦。北京時(shí)間2012年3月15日下午消息,蘋(píng)果周三發(fā)布的文件顯示,app store應(yīng)用商店每周收到的iphone和ipad應(yīng)用上架申請(qǐng)超過(guò)2.6萬(wàn)次,全年約為130萬(wàn)次2。自從2008年上線(xiàn)以來(lái),app store收到的應(yīng)用申請(qǐng)數(shù)量已經(jīng)大幅增長(zhǎng)。蘋(píng)果2009年向美國(guó)聯(lián)邦通訊委員會(huì)(fcc)透露,每周收到的申

14、請(qǐng)為8500次,2010年達(dá)到1.5萬(wàn)次,約為現(xiàn)在的一半3。事實(shí)上,自誕生以來(lái),蘋(píng)果應(yīng)用商店幾乎是以幾何級(jí)的規(guī)模增長(zhǎng)。蘋(píng)果應(yīng)用商店2008年7月上線(xiàn),僅用了2個(gè)月的時(shí)間就突破了1億次下載。去年10月,app store應(yīng)用商店的下載次數(shù)超過(guò)180億次。不過(guò)光鮮亮麗的數(shù)字背后,卻也隱含著高風(fēng)險(xiǎn)、高成本的危機(jī),iphone 最大的問(wèn)題,這是一個(gè)封閉的系統(tǒng),代碼的不開(kāi)源,從操作系統(tǒng)到開(kāi)發(fā)語(yǔ)言的獨(dú)具一幟,這注定了開(kāi)發(fā)人員不多,相對(duì)于其他操作平臺(tái)開(kāi)發(fā)人員漸現(xiàn)后勁不足。1.3 本論文的研究?jī)?nèi)容本文深入分析了課題的背景及意義、iphone應(yīng)用的現(xiàn)狀和發(fā)展趨勢(shì)。在前人的研究基礎(chǔ)上對(duì)影視信息手機(jī)客戶(hù)端進(jìn)行了重構(gòu)

15、和設(shè)計(jì)。本軟件在通過(guò)對(duì)服務(wù)器數(shù)據(jù)的解析,實(shí)現(xiàn)了各個(gè)對(duì)全國(guó)影訊的展現(xiàn),實(shí)現(xiàn)對(duì)影片簡(jiǎn)介、評(píng)分、評(píng)論等等的查看功能。詳細(xì)功能的設(shè)計(jì)和實(shí)現(xiàn)。1.4 本章小結(jié)本章中介紹了iphone軟件開(kāi)發(fā)的課題背景及意義,闡明了該應(yīng)用軟件開(kāi)發(fā)的國(guó)內(nèi)外研究現(xiàn)狀,描述了本論文的研究?jī)?nèi)容及本論文的結(jié)構(gòu)。2 ios、開(kāi)發(fā)語(yǔ)言、環(huán)境以及所用技術(shù)介紹2.1 ios簡(jiǎn)介ios最初是設(shè)計(jì)在iphone上的操作系統(tǒng),蘋(píng)果公司于2007年1月9日的macworld大會(huì)上公布了這個(gè)系統(tǒng),并命名為iphone os,但隨著此系統(tǒng)在ipod touch、ipad以及apple tv等蘋(píng)果產(chǎn)品上的廣泛應(yīng)用,蘋(píng)果公司于2010年6月7日wwdc大

16、會(huì)上將其改名為ios。據(jù)canalys的數(shù)據(jù)顯示, 截止到2011年11月,ios占據(jù)了全球智能手機(jī)系統(tǒng)市場(chǎng)份額的30%,在美國(guó)的市場(chǎng)占有率更是達(dá)到了43%。隨著andriod開(kāi)源操作系統(tǒng)的異軍突起以及windows phone的發(fā)力,ios市場(chǎng)份額正被一點(diǎn)點(diǎn)的蠶食,但ios設(shè)備的利潤(rùn)率高的驚人,以智能手機(jī)為例,iphone的利潤(rùn)額占到整個(gè)智能手機(jī)利潤(rùn)額的80%,受益于此,蘋(píng)果的市值也達(dá)到了5000億美元。ios操作采用的是多點(diǎn)觸控直接操作,控制方法包括滑動(dòng)、輕觸屏幕和圖標(biāo)及按鍵。操作有:滑動(dòng)、輕按、縮小及放大。此外,ios移動(dòng)設(shè)備中還內(nèi)置了加速器,使得旋轉(zhuǎn)ios設(shè)備時(shí),界面也可以得到旋轉(zhuǎn),這

17、也使得iphone等便攜設(shè)備更便于使用。自3gs開(kāi)始,iphone裝備有陀螺儀,這使得iphone有了重力感應(yīng),游戲效果更加的突出。屏幕的下方是home鍵,點(diǎn)按回到主界面。底部是dock,可安放四個(gè)使用者最經(jīng)常使用的程序的圖標(biāo)。屏幕最上方是狀態(tài)欄,顯示一些有關(guān)資訊:如時(shí)間、電池電量和訊號(hào)強(qiáng)度等。其余的屏幕用于顯示當(dāng)前的應(yīng)用程序。啟動(dòng)程序,只需點(diǎn)按該程序的圖標(biāo),點(diǎn)按屏幕下方的home鍵即退出應(yīng)用程序。在iphone 3.0及后續(xù)版本中,及時(shí)應(yīng)用程序退出,當(dāng)?shù)谌杰浖盏搅诵碌挠嵪r(shí),蘋(píng)果公司的服務(wù)器將把這些通知推送至iphone或ipod touch上(不管它是否正在運(yùn)行中)。2.2開(kāi)發(fā)語(yǔ)言ob

18、jective-cobjective-c, 也通常被寫(xiě)作objc,是一種擴(kuò)充c的面向?qū)ο缶幊陶Z(yǔ)言,主要用于mac os x和gnustep這兩個(gè)使用openstep標(biāo)準(zhǔn)的系統(tǒng)。objective-c最開(kāi)始并不支持垃圾回收,因?yàn)槔厥沼新L(zhǎng)的“死亡時(shí)間”, 會(huì)導(dǎo)致整個(gè)系統(tǒng)失去功用。但自xcode4.0開(kāi)始,支持自動(dòng)釋放,也就是arc (automatic reference counting)機(jī)制,不需要用戶(hù)手動(dòng)去release每一個(gè)對(duì)象,編譯器會(huì)在編譯期間自動(dòng)幫你添加那些以前你經(jīng)常寫(xiě)的nsobject release。objective-c和c+有很多不同之處,objective-c不支持運(yùn)

19、算符重載,也只允許對(duì)象單繼承,但其引入的categories和protocols可以提供很多多重繼承的好處。很多常見(jiàn)的編譯時(shí)的性能優(yōu)化方法都不能應(yīng)用于obj-c,比如內(nèi)聯(lián)函數(shù)。2.3開(kāi)發(fā)環(huán)境(1)xcode 工具xcode是apple的開(kāi)發(fā)工具套件,支持項(xiàng)目管理、編輯代碼、構(gòu)建可執(zhí)行程序、代碼級(jí)調(diào)試、代碼的版本管理、性能調(diào)優(yōu)等等。這個(gè)套件的核心是xcode應(yīng)用本身,它提供了基本的源代碼開(kāi)發(fā)環(huán)境。開(kāi)發(fā)者可以在xcode中創(chuàng)建新項(xiàng)目,開(kāi)始新的iphone應(yīng)用程序。一個(gè)項(xiàng)目管理應(yīng)用程序所有的信息,包含源代碼、編譯設(shè)置和把所有文件整合到一起的編譯規(guī)則。xcode項(xiàng)目的核心是項(xiàng)目窗口,開(kāi)發(fā)者可以通過(guò)該窗

20、口快速訪(fǎng)問(wèn)應(yīng)用程序的所有關(guān)鍵元素。組和文件列表管理項(xiàng)目文件,包括了源代碼文件和編譯后的目標(biāo)文件。工具欄提供了常用的工具和命令,詳細(xì)資料面板用來(lái)設(shè)置項(xiàng)目的工作區(qū)域,項(xiàng)目窗口的其他部分可以提供更多的項(xiàng)目信息。² 項(xiàng)目窗口² 組和文件列表² 詳細(xì)資料面板xcode有一個(gè)高級(jí)的代碼編輯器,它提供代碼補(bǔ)全、語(yǔ)法高亮、代碼隱藏(臨時(shí)隱藏代碼塊),還有錯(cuò)誤、警告和說(shuō)明的內(nèi)置注釋。xcode環(huán)境中提供了一些默認(rèn)的設(shè)置和用戶(hù)環(huán)境設(shè)置。并且需要立即幫助文檔,xcode搜索助手提供了上下文文檔,同時(shí)開(kāi)發(fā)者可以在幫助文檔窗口中瀏覽和搜索相關(guān)信息。(2)simulator模擬器iphone

21、 simulator是iphone sdk中頗為有用的一個(gè)工具,無(wú)需使用實(shí)際的iphone/ipod touch就可以測(cè)試應(yīng)用程序。通常不需要直接啟動(dòng)iphone simulator它在xcode運(yùn)行(或是調(diào)試)應(yīng)用程序時(shí)會(huì)自動(dòng)啟動(dòng)。xcode會(huì)自動(dòng)將應(yīng)用程序安裝到iphone simulator上。開(kāi)發(fā)者在xcode創(chuàng)建應(yīng)用程序,在編譯時(shí)需要選擇iphone模擬器還有設(shè)備。iphone模擬器提供了一個(gè)本地的應(yīng)用測(cè)試環(huán)境。在iphone模擬器通過(guò)測(cè)試后,可以用xcode編譯并運(yùn)行到與計(jì)算機(jī)相連接的iphone上。在iphone上的運(yùn)行提供了最全面的測(cè)試環(huán)境,xcode可以在設(shè)備測(cè)試時(shí)用內(nèi)置的調(diào)

22、試器跟蹤代碼。(3)interface builder在interface builder 中創(chuàng)建的nib文件包含了uikit需要在應(yīng)用中創(chuàng)建相同對(duì)象的所有信息。在運(yùn)行時(shí)加載nib文件,創(chuàng)建它們的運(yùn)行時(shí)版本,設(shè)置與interface builder中相同的屬性。它也使用連接信息,建立新建對(duì)象和應(yīng)用程序中其他對(duì)象之間的聯(lián)系。連接信息提供了代碼與nib文件的對(duì)象連接關(guān)系,同時(shí)也提供了對(duì)象與用戶(hù)動(dòng)作之間的聯(lián)系。總的來(lái)說(shuō),在創(chuàng)建應(yīng)用程序圖形用戶(hù)界面時(shí),使用interface builder可以節(jié)約大量時(shí)間。interface builder擺脫了手工編寫(xiě)代碼創(chuàng)建、設(shè)置和定位界面對(duì)象,并且interfa

23、ce builder是一個(gè)可視的編輯器,開(kāi)發(fā)者可以清楚地看到在運(yùn)行時(shí)界面效果。(4)instruments為了確保軟件具有最佳的用戶(hù)體驗(yàn),instruments可以分析iphone應(yīng)用在模擬器或真實(shí)設(shè)備上運(yùn)行時(shí)的性能。instruments將用時(shí)間軸圖表的形式表現(xiàn)運(yùn)行應(yīng)用程序時(shí)的各種數(shù)據(jù),包括內(nèi)存消耗、磁盤(pán)活動(dòng)、網(wǎng)絡(luò)活動(dòng)和圖形表現(xiàn)等。時(shí)間軸視圖表征了不同類(lèi)型的應(yīng)用程序信息,可以收集應(yīng)用程序的全部行為,而不是某個(gè)特定區(qū)域的行為。除時(shí)間軸視圖外,instruments也提供工具幫助開(kāi)發(fā)者分析運(yùn)行時(shí)應(yīng)用程序的行為。例如,instruments窗口可以保存多個(gè)運(yùn)行時(shí)數(shù)據(jù),開(kāi)發(fā)者可以觀察應(yīng)用程序的行為哪

24、些需要改進(jìn)或哪些需要重寫(xiě),開(kāi)發(fā)者可以保存數(shù)據(jù)到instruments文檔中,也可以隨時(shí)打開(kāi)這些數(shù)據(jù)。2.4應(yīng)用程序框架以及設(shè)計(jì)模式mvc (模型視圖控制器)是xerox parc在八十年代為編程語(yǔ)言smalltalk80發(fā)明的一種軟件設(shè)計(jì)模式,至今已被廣泛使用5。最近幾年被推薦為sun公司j2ee平臺(tái)的設(shè)計(jì)模式,并且受到越來(lái)越多的使用 ios 和 php 的開(kāi)發(fā)者的歡迎。mvc是用于拆分gui應(yīng)用程序的邏輯方法。mvc是一個(gè)設(shè)計(jì)模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開(kāi)。 mvc 模型將所有功能能劃分為3種,如圖2-1所示。(1)模型模型對(duì)象代表特別的知識(shí)和專(zhuān)業(yè)技能,它們負(fù)責(zé)保有應(yīng)用程序

25、的數(shù)據(jù)和定義操作數(shù)據(jù)的邏輯。被模型返回的數(shù)據(jù)是中立的,就是說(shuō)模型與數(shù)據(jù)格式無(wú)關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)由于應(yīng)用于模型的代碼只需寫(xiě)一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。(2)視圖視圖對(duì)象知道如何顯示應(yīng)用程序的模型數(shù)據(jù),而且可能允許用戶(hù)對(duì)其進(jìn)行編輯。視圖是用戶(hù)看到并與之交互的界面。如何處理應(yīng)用程序的界面變得越來(lái)越有挑戰(zhàn)性。mvc一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒(méi)有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還是一個(gè)雇員列表,作為視圖來(lái)講,它只是作為一種輸出數(shù)據(jù)并允許用戶(hù)操縱的方式。圖2-1 mvc模式設(shè)計(jì)(3)控制器控制器對(duì)象是應(yīng)用程序的視圖對(duì)象和

26、模型對(duì)象之間的協(xié)調(diào)者??刂破鹘邮苡脩?hù)的輸入并調(diào)用模型和視圖去完成用戶(hù)的需求。控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后用確定用哪個(gè)視圖來(lái)顯示模型處理返回的數(shù)據(jù)。mvc最重要的一點(diǎn)是多個(gè)視圖能共享一個(gè)模型,正如我所提及的,現(xiàn)在需要用越來(lái)越多的方式來(lái)訪(fǎng)問(wèn)你的應(yīng)用程序。對(duì)此,其中一個(gè)解決之道是使用mvc,無(wú)論你的用戶(hù)想要flash界面或是wap界面;用一個(gè)模型就能處理它們。由于你已經(jīng)將數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開(kāi),所以你可以最大化的重用你的代碼了。由于模型返回的數(shù)據(jù)沒(méi)有進(jìn)行格式化,所以同樣的構(gòu)件能被不同界面使用。例如,很多數(shù)據(jù)可能用html來(lái)表示,但是它

27、們也有可能要用macromedia flash和wap來(lái)表示。模型也有狀態(tài)管理和數(shù)據(jù)持久性處理的功能。因?yàn)槟P褪亲园模⑶遗c控制器和視圖相分離,所以很容易改變你的應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。如果你想把你的數(shù)據(jù)庫(kù)從mysql移植到oracle,或者改變你的基于rdbms數(shù)據(jù)源到ldap,只需改變你的模型即可。一旦你正確的實(shí)現(xiàn)了模型,不管你的數(shù)據(jù)來(lái)自數(shù)據(jù)庫(kù)或是ldap服務(wù)器,視圖將會(huì)正確的顯示它們。由于運(yùn)用mvc的應(yīng)用程序的三個(gè)部件是相互對(duì)立,改變其中一個(gè)不會(huì)影響其它兩個(gè),所以依據(jù)這種設(shè)計(jì)思想你能構(gòu)造良好的松偶合的構(gòu)件。對(duì)我來(lái)說(shuō),控制器的也提供了一個(gè)好處,就是可以使用控制器來(lái)聯(lián)接不同的模型和視

28、圖去完成用戶(hù)的需求,這樣控制器可以為構(gòu)造應(yīng)用程序提供強(qiáng)有力的手段。給定一些可重用的模型和視圖,控制器可以根據(jù)用戶(hù)的需求選擇模型進(jìn)行處理,然后選擇視圖將處理結(jié)果顯示給用戶(hù)。設(shè)計(jì)模式(1)工廠模式類(lèi)工廠方法的實(shí)現(xiàn)是為了向客戶(hù)提供方便,它們將分配和初始化合在一個(gè)步驟中, 返回被創(chuàng)建的對(duì)象,并進(jìn)行自動(dòng)釋放處理6。工廠方法可能不僅僅為了方便使用。它們不但可以將分配和初始化合在一起,還可以為初始化過(guò)程提供對(duì)象的分配信息。(2)單利模式foundation 和 application kit 框架中的一些類(lèi)只允許創(chuàng)建單件對(duì)象,即這些類(lèi)在當(dāng)前進(jìn)程中的唯一實(shí)例。舉例來(lái)說(shuō),nsfilemanager 和nswor

29、kspace 類(lèi)在使用時(shí)都是基于進(jìn)程進(jìn)行單件對(duì)象的實(shí)例化。當(dāng)向這些類(lèi)請(qǐng)求實(shí)例的時(shí)候,它們會(huì)向您傳遞單一實(shí)例的一個(gè)引用,如果該實(shí)例還不存在,則首先進(jìn)行實(shí)例的分配 和初始化。 單件對(duì)象充當(dāng)控制中心的角色,負(fù)責(zé)指引或協(xié)調(diào)類(lèi)的各種服務(wù)。(3)觀察者模式在ios開(kāi)發(fā)中,通知機(jī)制依靠觀察者模式得以實(shí)現(xiàn)。通知機(jī)制是一個(gè)中心對(duì)象為所有觀察者提供變更通知,觀察者模式中subject對(duì)象,又可稱(chēng)目標(biāo)對(duì)象,是通知的發(fā)布者,又是被觀察者。提供注冊(cè)和取消注冊(cè)的方法;observer對(duì)象,又可稱(chēng)為觀察者,是通知的訂閱者。observer類(lèi)中,相識(shí)subject,以達(dá)到能夠接收通知。2.5 第三方類(lèi)庫(kù)(1)通信協(xié)議請(qǐng)求as

30、ihttprequest使用ios sdk中的http網(wǎng)絡(luò)請(qǐng)求api,相當(dāng)?shù)膹?fù)雜,調(diào)用很繁瑣,asihttprequest就是一個(gè)對(duì)cfnetwork api進(jìn)行了封裝,并且使用起來(lái)非常簡(jiǎn)單的一套api,用objective-c編寫(xiě),可以很好的應(yīng)用在mac os x系統(tǒng)和ios平臺(tái)的應(yīng)用程序中。asihttprequest適用于基本的http請(qǐng)求,和基于rest的服務(wù)之間的交互。(2)touchjson解析     cocos2d for iphone是開(kāi)源2d引擎中特性最完備的一個(gè)。   touchjson的使用屬于不想在一個(gè)比較完全的obj

31、ective c環(huán)境中添加c+代碼,所以不使用jsoncpp來(lái)配合cocos2d,何況cocos2d的模板工程中本來(lái)就帶有touchjson了。另外,因?yàn)閠ouchjson用objective c完成,解析后也是個(gè)nsdictionary的對(duì)象所以與objecitve c的對(duì)象組合使用會(huì)更加自然一些。 (3)sdwebimage圖片庫(kù)是一個(gè)支持網(wǎng)絡(luò)圖像遠(yuǎn)程異步下載的uiimageview的類(lèi)別。具有緩存管理、異步下載、同一個(gè)url下載次數(shù)控制和優(yōu)化等特征。2.6 本章小結(jié)本章主要是深入研究了本系統(tǒng)的開(kāi)發(fā)工具xcode,介紹了一些編輯器模擬器的使用方法和技巧。然后介紹系統(tǒng)mvc框架,指出框架在項(xiàng)

32、目中的應(yīng)用,接著分別介紹了本系統(tǒng)用到的設(shè)計(jì)模式和第三方庫(kù)。3 功能模塊設(shè)計(jì)3.1 需求分析(1)首頁(yè):頁(yè)面主體內(nèi)容構(gòu)成:大頭圖、圖文列表。而在大頭圖中由圖片+影評(píng)標(biāo)題構(gòu)成。圖文列表中,單條影評(píng)的展示方式:頭像+用戶(hù)名+評(píng)分影片+評(píng)分分值+標(biāo)題+摘要+影片海報(bào)。圖文列表排序規(guī)則:同web端。先首頁(yè)影評(píng),再新片熱評(píng)列表。圖文列表處:用戶(hù)初次進(jìn)入,默認(rèn)顯示20條,在頂部的時(shí)候向下拖動(dòng),刷新當(dāng)前頁(yè)面,在頁(yè)面底部向上拖動(dòng)展開(kāi)顯示更多20條。 手指在屏幕上下滑動(dòng),可以查看影視頻道的所有內(nèi)容。點(diǎn)擊頭圖,進(jìn)入頭圖內(nèi)容頁(yè)。頁(yè)面自右向左顯示。點(diǎn)擊單條圖文列表影評(píng),該條處于選中的狀態(tài),進(jìn)入影評(píng)內(nèi)容頁(yè)。頁(yè)面自右向左顯

33、示。頂部導(dǎo)航處:中間顯示頻道名稱(chēng):時(shí)光網(wǎng)影評(píng)。底部導(dǎo)航處:依次顯示:首頁(yè)、新聞、影評(píng)、電影院、更多。選中效果在“影評(píng)”。(2)具體內(nèi)容頁(yè)頁(yè)面主體內(nèi)容構(gòu)成:頭像、標(biāo)題、用戶(hù)名、評(píng)分電影、評(píng)分分值、發(fā)表時(shí)間、海報(bào)、正文。頂部導(dǎo)航處:中間顯示頻道名稱(chēng):時(shí)光網(wǎng)影評(píng)。左側(cè)顯示返回按鈕。底部操作區(qū)處:依次顯示:評(píng)論icon(有評(píng)論的icon右下角顯示評(píng)論數(shù)量)、收藏、分享。其中,收藏和分享,未登錄用戶(hù)點(diǎn)擊進(jìn)入登錄頁(yè)。頁(yè)面自下向上移入。點(diǎn)擊縮略圖,浮層顯示大圖。頁(yè)面可隨手指上下滑動(dòng)。手指點(diǎn)擊屏幕的非縮略圖區(qū)域,全屏顯示頁(yè)面主體內(nèi)容,再點(diǎn)擊,回到正常顯示。支持多點(diǎn)觸摸,字體變大變小,縮略圖大小不變。用戶(hù)左右滑

34、動(dòng)可切換上一篇/下一篇電影,點(diǎn)擊評(píng)論icon進(jìn)入查看評(píng)論頁(yè),頁(yè)面自右向左顯示。(3)查看評(píng)論頁(yè)頁(yè)面主體內(nèi)容構(gòu)成:圖文列表。圖文列表中,單條影評(píng)的展示方式:頭像+用戶(hù)名+微影評(píng)。圖文列表處:用戶(hù)初次進(jìn)入,默認(rèn)顯示20條,在頂部的時(shí)候向下拖動(dòng),刷新當(dāng)前頁(yè)面,在頁(yè)面底部向上拖動(dòng)展開(kāi)顯示更多20條。 手指在屏幕上下滑動(dòng),可以查看影評(píng)頻道的所有內(nèi)容。點(diǎn)擊表格,彈出回復(fù)按鈕、進(jìn)入發(fā)表評(píng)論頁(yè)面,頁(yè)面自右向左顯示。完成時(shí)將以另外一種形式顯示于回復(fù)當(dāng)前人表格下,頁(yè)面自右向左顯示。頂部導(dǎo)航處:中間顯示頻道名稱(chēng):查看評(píng)論。左邊顯示返回按鈕,點(diǎn)擊返回按鈕返回評(píng)論頁(yè)內(nèi)容,頁(yè)面自右向左顯示。底部導(dǎo)航處:顯示寫(xiě)評(píng)論導(dǎo)航條編

35、輯區(qū),點(diǎn)擊編輯區(qū)同樣進(jìn)入發(fā)表評(píng)論頁(yè)面,頁(yè)面自右向左顯示完成時(shí)將以同種形式顯示于表格最下方,頁(yè)面自右向左顯示。(4)發(fā)表評(píng)論頁(yè)頁(yè)面主體內(nèi)容構(gòu)成:編輯區(qū)。圖文列表處:用戶(hù)初次進(jìn)入,編輯區(qū)顯示默認(rèn)文字,且關(guān)聯(lián)鍵盤(pán)顯示。點(diǎn)擊編輯區(qū),默認(rèn)文字消失,進(jìn)入編輯狀態(tài)。頂部導(dǎo)航處:中間顯示頻道名稱(chēng):發(fā)表評(píng)論。左邊顯示取消按鈕,點(diǎn)擊取消按鈕不保存評(píng)論內(nèi)容回查看評(píng)論頁(yè),頁(yè)面自右向左顯示。左邊顯示提交按鈕,點(diǎn)擊提交按鈕保存評(píng)論內(nèi)容回查看評(píng)論頁(yè),頁(yè)面自右向左顯示。3.2系統(tǒng)模塊設(shè)計(jì)首頁(yè)具體內(nèi)容頁(yè)轉(zhuǎn)發(fā)評(píng)論收藏全屏 分享寫(xiě)評(píng)論回復(fù)程序的整體功能模塊,里面包含數(shù)據(jù)判斷、功能選擇、輸出模塊等。數(shù)據(jù)判斷是從cookie中取值。具

36、體的模塊設(shè)計(jì)如圖3-1所示。圖 3-1 設(shè)計(jì)結(jié)構(gòu)圖3.3 登錄模塊和手勢(shì)交互模塊流程圖設(shè)計(jì)3.3.1 用戶(hù)登錄模塊設(shè)計(jì)具體內(nèi)容頁(yè)中,需要判斷是否用戶(hù)已經(jīng)登錄,如果登錄則可以則從cookie中取得用戶(hù)信息,將評(píng)論內(nèi)容直接以用戶(hù)名發(fā)送出去,而未登錄時(shí)只能匿名發(fā)表,而回復(fù)別人的評(píng)論則必須登錄,流程圖如圖3-2所示。用戶(hù)登錄cookie中是否有值登錄成功進(jìn)行用戶(hù)評(píng)論和回復(fù)ny圖3-2 登錄判斷流程圖3.3.2 手勢(shì)交互設(shè)計(jì)手勢(shì)9(gesture)是指從用一個(gè)或多個(gè)手指接觸屏幕開(kāi)始,直到手指離開(kāi)屏幕為止所發(fā)生的所有事件。由于手勢(shì)是在事件之內(nèi)傳遞到系統(tǒng)的,然后事件會(huì)傳遞到響應(yīng)者鏈(responder ch

37、ain)。如果第一個(gè)響應(yīng)者不處理某個(gè)特殊事件(如某個(gè)手勢(shì)),則它會(huì)將該事件傳遞到響應(yīng)者鏈的下一級(jí)。如果該鏈中的下一個(gè)對(duì)象響應(yīng)此特殊事件,則它通常會(huì)處理該事件,這將停止該事件沿著響應(yīng)者鏈向前傳遞。如圖3-3所示。3.3.3 多點(diǎn)觸摸交互設(shè)計(jì)很明顯,觸摸(touch)是指手指放到iphone屏幕上,手勢(shì)中涉及的觸摸數(shù)量等于同時(shí)位于屏幕上的手指數(shù)量,當(dāng)觸目數(shù)量為1在進(jìn)行移動(dòng)時(shí),或觸目數(shù)量大于1時(shí)形成多點(diǎn)觸目,如圖3-4所示。3.4 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)是對(duì)整個(gè)程序的整體設(shè)計(jì),它包含界面的設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)、功能過(guò)程的顯示等。開(kāi)始第一響應(yīng)者是否響應(yīng)第n響應(yīng)者是結(jié)束 否是 否是否響應(yīng) 否圖3-3 手勢(shì)響應(yīng)

38、鏈流程圖觸摸開(kāi)始單 擊移 動(dòng)捏合或移動(dòng)形成多點(diǎn)觸摸單指多指 圖3-4 多點(diǎn)觸摸結(jié)構(gòu)圖3.4.1 選擇的控件l uilabel顯示文字的控件,它能設(shè)置要顯示的文字的顏色,大小,格式等相關(guān)屬性。l uiimageview顯示圖片的控件,根據(jù)回來(lái)的圖片地址,能從緩沖里或者沙盒中選取要顯示的圖片,它能設(shè)置要顯示的圖片的顏色,大小,格式等相關(guān)屬性。l uitextview主要用來(lái)對(duì)文字的輸入,當(dāng)響應(yīng)它時(shí)自動(dòng)彈出鍵盤(pán),一行輸入滿(mǎn)時(shí)可以自動(dòng)換行。l uibutton在iphone上主要是一個(gè)按鈕,該按鈕能響應(yīng)用戶(hù)一切對(duì)其操作的單擊、雙擊、長(zhǎng)按事件,可以對(duì)其設(shè)置響應(yīng)函數(shù)。l uitableview在iphon

39、e上一個(gè)表格視圖是一維的,自頂向下的條目清單,可選的分為多個(gè)區(qū)域,區(qū)域?qū)嶋H上把清單變?yōu)槎S數(shù)據(jù)結(jié)構(gòu),每個(gè)區(qū)域有可變數(shù)目的條目,因此表格里某個(gè)指定的條目由它所在區(qū)域和所在區(qū)域的行(row)來(lái)決定。l uiwebview在iphone上用來(lái)顯示網(wǎng)站要顯示的信息,開(kāi)發(fā)者可以重寫(xiě)網(wǎng)頁(yè)數(shù)據(jù)的格式,也可以用js返回所要用到的數(shù)據(jù)。3.4.2 界面的繪制界面區(qū)域的視圖繪制較為簡(jiǎn)單。只需要根據(jù)當(dāng)前需求分析,來(lái)對(duì)每一個(gè)也頁(yè)面進(jìn)行繪制。先生成一個(gè)控制器(uiviewcontroller),同時(shí)可以生成一個(gè)viewcontroller.xib然后將要用到的控件拖入相應(yīng)的位置,形成插座控件,待請(qǐng)求完成時(shí)加載數(shù)據(jù)。如果

40、沒(méi)有生成nib文件,則在viewcontroller.m中用代碼實(shí)現(xiàn)控件的生成,再?gòu)脑匆晥D像位圖中選擇適當(dāng)?shù)膮^(qū)域?qū)⑵涮砑拥絻?nèi)存位圖中,當(dāng)所有這些圖像方塊都繪制到內(nèi)存位圖后,再一次性地將整體圖像從內(nèi)存位圖拷貝到屏幕去。繪制流程如圖3-5所示。3.4.3 數(shù)據(jù)輸入與傳遞該軟件通過(guò)用戶(hù)對(duì)界面的操作,實(shí)現(xiàn)數(shù)據(jù)的傳遞,而在此項(xiàng)目中當(dāng)點(diǎn)擊影評(píng)頁(yè)首頁(yè)頭圖和列表時(shí),保存一個(gè)當(dāng)前點(diǎn)擊影評(píng)的id將及傳至影評(píng)詳情頁(yè)。而詳情頁(yè)則根據(jù)此id進(jìn)行數(shù)據(jù)請(qǐng)求,將解析后的數(shù)據(jù)顯示到當(dāng)前頁(yè)面,而在詳情頁(yè)中,點(diǎn)擊圖片用js導(dǎo)出圖片鏈接,將此鏈接對(duì)應(yīng)的圖片從緩存中取出,對(duì)其進(jìn)行操作,而點(diǎn)擊詳情頁(yè)下部導(dǎo)航條時(shí)則從cookie中取取用戶(hù)

41、數(shù)據(jù),看是否登錄,然后根據(jù)登錄狀態(tài),進(jìn)行邏輯分析和判斷。是否生成nib文件將控件加入xib中完 成yn在控制器中加入控件開(kāi)始生成控制器圖3-5 界面繪制流程圖3.4.4 數(shù)據(jù)的保存和顯示前面實(shí)現(xiàn)的眾多功能都是圍繞著位置這一關(guān)鍵來(lái)運(yùn)作的,數(shù)據(jù)的保存分為兩種,一種是臨時(shí)緩存,臨時(shí)緩存很簡(jiǎn)單,sdk封裝好的模塊我們可以直接拿來(lái)用,在數(shù)據(jù)請(qǐng)求完成時(shí)可以直接保存到緩存區(qū)。另一種則是保存到沙盒路徑既永久保存,此時(shí)根據(jù)用戶(hù)名在沙盒中創(chuàng)建一個(gè)文件,用單利模式創(chuàng)建一個(gè)用戶(hù)數(shù)據(jù)模型,每次要用時(shí)從數(shù)據(jù)模型中讀取數(shù)據(jù),當(dāng)修改用戶(hù)信息時(shí)則對(duì)其進(jìn)行保存。而數(shù)據(jù)的顯示我們只需將從文件中讀到的數(shù)據(jù),或者是從緩存中取到的數(shù)據(jù)加

42、到相應(yīng)的控件數(shù)據(jù)上,控件將顯示出我們所設(shè)計(jì)的效果。3.4.5 自動(dòng)登錄自動(dòng)登錄是由軟件自動(dòng)完成的。用戶(hù)在上次登錄程序中登錄了賬戶(hù)而沒(méi)有對(duì)其進(jìn)行注銷(xiāo)而直接退出程序,這時(shí)程序會(huì)自動(dòng)將未退出的賬號(hào)記錄下來(lái)保存在本地,而當(dāng)下次啟動(dòng)此應(yīng)用時(shí),先從文件中去讀數(shù)據(jù),看上次用戶(hù)退出時(shí)是否處在登錄狀態(tài),若是將用戶(hù)名和密碼取出,自動(dòng)請(qǐng)求登錄接口,完成自動(dòng)登錄。3.5 本章小結(jié)本章主要是對(duì)各功能模塊的需求做了詳細(xì)的分析。接著劃分系統(tǒng)的模塊,對(duì)用戶(hù)登錄做了詳細(xì)的分析,設(shè)計(jì)智能手機(jī)的多點(diǎn)觸摸,對(duì)系統(tǒng)的各個(gè)功能頁(yè)面進(jìn)行詳細(xì)構(gòu)造,完成ui圖的繪制及數(shù)據(jù)的顯示及保存設(shè)置,完成自動(dòng)登錄的邏輯設(shè)計(jì)。4 功能模塊的具體實(shí)現(xiàn)4.1

43、數(shù)據(jù)請(qǐng)求 asihttpreques是一款極其強(qiáng)勁的http訪(fǎng)問(wèn)開(kāi)源項(xiàng)目。而數(shù)據(jù)的請(qǐng)求可以分為同步和異步請(qǐng)求,同步意為著線(xiàn)程阻塞,在主線(xiàn)程中使用此方法會(huì)使應(yīng)用停住而不響應(yīng)任何用戶(hù)事件10。所以,在應(yīng)用程序設(shè)計(jì)時(shí),大多被用在專(zhuān)門(mén)的子線(xiàn)程增加用戶(hù)體驗(yàn),或用異步請(qǐng)求代替。異步請(qǐng)求更加精準(zhǔn)豐富的控制。異步請(qǐng)求的好處是不阻塞當(dāng)前線(xiàn)程,但相對(duì)于同步請(qǐng)求略為復(fù)雜,至少要添加兩個(gè)回調(diào)方法來(lái)獲取異步事件不過(guò)可以設(shè)置在隊(duì)列中,同步請(qǐng)求的連接數(shù)。往隊(duì)列里添加的請(qǐng)求實(shí)例數(shù)大于maxconcurrentoperationcount時(shí),請(qǐng)求實(shí)例將被置為等待,直到前面至少有一個(gè)請(qǐng)求完成并出列才被放到隊(duì)列里執(zhí)行。 - (ib

44、action)graburlinthebackground:(id)sender  if (!self queue)  self setqueue:nsoperationqueue alloc init autorelease; nsurl *url = nsurl urlwithstring:"http:/allseeing-"asihttprequest *request = asihttpreques

45、t requestwithurl:url; request setdelegate:self;request setdidfinishselector:selector(requestdone:); request setdidfailselector:selector(requestwentwrong:); self queue addoperation:request; 4.2 網(wǎng)絡(luò)判斷網(wǎng)絡(luò)判斷是指用戶(hù)能否連接到網(wǎng)絡(luò)進(jìn)行請(qǐng)求數(shù)據(jù),為了保證數(shù)據(jù)的可靠性,需要對(duì)用戶(hù)進(jìn)行網(wǎng)絡(luò)連接失敗和超時(shí)進(jìn)行判斷,當(dāng)進(jìn)行數(shù)

46、據(jù)請(qǐng)求時(shí),如果請(qǐng)求失敗,服務(wù)器會(huì)返回一個(gè)錯(cuò)誤信息error,而ios-sdk對(duì)請(qǐng)求這一塊進(jìn)行了很好的封裝,返回一個(gè)結(jié)構(gòu)體,而其中的1則代表網(wǎng)絡(luò)連接失敗,2則是連接30秒超時(shí),代碼如下:#define net_error_connet_failure "網(wǎng)絡(luò)連接失敗,請(qǐng)檢查網(wǎng)絡(luò)"#define net_error_time_out "網(wǎng)絡(luò)連接超時(shí)"- (void)reque requestwentwrong:(asihttprequest *)requestnserror* error = _httprequest.error;self notifydel

47、egatewith:nil anderror:error;nsinteger code = error.code;switch (code) case asiconnectionfailureerrortype: /1 commutils showmessagewithstr:net_error_connet_failure;break;case asirequesttimedouterrortype: /2commutils showmessagewithstr: net_error_time_out;break;default: break;4.3 數(shù)據(jù)的解析用戶(hù)請(qǐng)求回來(lái)的數(shù)據(jù)都是json

48、字符串,json可以表示數(shù)組和復(fù)雜的對(duì)象,而不僅僅是鍵和值的簡(jiǎn)單列表。json 可以將 javascript 對(duì)象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從 web 客戶(hù)機(jī)傳遞給服務(wù)器端程序,用戶(hù)只有經(jīng)過(guò)解析后才能使用,關(guān)鍵代碼如下:#define release_safely(_pointer)if(_pointer)_pointer release;_pointer = nil; /安全釋放數(shù)據(jù)模型解析;- (void) requestdone :(asihttprequest *)requestnserror* error =

49、nil;nsdata* data = _httprequest.responsedata; /請(qǐng)求回來(lái)數(shù)據(jù)cjsondeserializer* jsonparser = cjsondeserializer deserializer; nsarray* reviewjsonarray = jsonparser deserializeasarray:data error:&error;if (error)return;nsmutablearray* resp = nsmutablearray alloc init;for(nsdictionary* reviewdict in review

50、jsonarray)treview* review = treview alloc init; review.rating = reviewdict objectforkey:"rating" doublevalue;review.id = reviewdict objectforkey:kjson_id integervalue;review.image = reviewdict objectforkey:kjson_image;review.nickname = reviewdict objectforkey:kjson_nickname;review.userimag

51、e = reviewdict objectforkey:kjson_userimage;review.title = reviewdict objectforkey:kjson_title;review.summary = reviewdict objectforkey:kjson_summary;release_safely(review);self notifydelegatewith:resp anderror:error;release_safely(resp);4.4 代理的實(shí)現(xiàn) 由于uiwebview繼承uiscrollview,而uiscrollview無(wú)法捕獲uitouch事件

52、,故當(dāng)觸摸uiwebview時(shí),系統(tǒng)將沒(méi)有任何反應(yīng),無(wú)法實(shí)現(xiàn)全屏,用代理注冊(cè)手勢(shì),用來(lái)捕獲事件。uigesturerecognizerdelegate/注冊(cè)手勢(shì)/將手勢(shì)加入要操作的控件 uitapgesturerecognizer* singletap = uitapgesturerecognizer alloc initwithtarget:self action:selector(display);    _contentweb addgesturerecognizer:

53、singletap; /這個(gè)可以加到任何控件上singletap.delegate = self;    singletap.cancelstouchesinview = no;    singletap release;- (bool)gesturerecognizer:(uigesturerecognizer *)gesturerecognizer shouldrecognizesimultaneouslywithgesturerecogni

54、zer:(uigesturerecognizer *)othergesturerecognizer    return yes4.5 算法描述與實(shí)現(xiàn)quartz 是 cocoa 全部圖表算法11的核心。它是圖表算法數(shù)據(jù)結(jié)構(gòu)和畫(huà)圖的基礎(chǔ),也是 mac os x 的窗口服務(wù)器。cocoa 圖表算法的基本概念,包括:矩形,點(diǎn),顏色和系統(tǒng)坐標(biāo)。(1)矩形和點(diǎn)在 quartz 的所有繪圖包括矩形。在 cocoa,你可以用 nsrect 結(jié)構(gòu)去描述一個(gè)矩形的位置和尺寸:typedef struct nspoint origin; /起點(diǎn)

55、nssize size;    /長(zhǎng)寬                                         nsrect;原點(diǎn)是畫(huà)矩形開(kāi)始的地方。點(diǎn)由 nspoint

56、來(lái)描述,有坐標(biāo) x 和 y:typedef struct float x; /橫坐標(biāo)float y; /縱坐標(biāo) nspoint;矩形的大小區(qū)域是一個(gè) nssize,包含了長(zhǎng)和寬。沒(méi)有辦法去描述一個(gè) nssize 實(shí)例,它必須作為矩形的一部分來(lái)使用。typedef struct float width; /寬度f(wàn)loat height; /高度 nssize;cocoa 里畫(huà)圖的區(qū)域被作為一個(gè)矩形。quartz 調(diào)用這個(gè)畫(huà)圖區(qū)“bounds”。一個(gè) nspoint 點(diǎn)就能描繪 bounds 視圖的任何位置。標(biāo)準(zhǔn)的 quartz 系統(tǒng)坐標(biāo)是基于 pdf 模式,也就是說(shuō)畫(huà)圖要從左下角開(kāi)始,如圖4-1所示。圖 4-1 坐標(biāo)系的描述圖矩形和點(diǎn)比較的一些函數(shù)nsequalrects /矩形是否相同nsequalpoints /原點(diǎn)是否相同nsequalsizes /大小是否相同nscontainsrect /是否包含另一個(gè)矩形nsintersectsrect /兩矩形重疊的部分nspointinrect /點(diǎn)是否在當(dāng)前矩形中nsmouseinrect /鼠標(biāo)位置是否在當(dāng)前矩形中nsisemptyrec

溫馨提示

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

評(píng)論

0/150

提交評(píng)論