張 永
(青島科技大學(xué),青島 266000)
隨著移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,手機(jī)App得到了迅速普及。手機(jī)App給用戶帶來(lái)了更多體驗(yàn)和便捷功能。根據(jù)中商情報(bào)網(wǎng)艾媒咨詢中國(guó)手機(jī)App市場(chǎng)研究報(bào)告顯示[1],教育學(xué)習(xí)類App只占總市場(chǎng)份額28.1%,而社交類App卻有64.1%,可見(jiàn)教育學(xué)習(xí)類App還是一個(gè)亟待開發(fā)的市場(chǎng)。
本設(shè)計(jì)的開發(fā)初衷就是抓住青島版教材配套的App無(wú)人開發(fā)的市場(chǎng),計(jì)劃結(jié)合現(xiàn)在移動(dòng)端技術(shù)及發(fā)展趨勢(shì),利用iOS移動(dòng)操作系統(tǒng)開發(fā)一款與青島版數(shù)學(xué)教材[2]配套的App。
在計(jì)算機(jī)安全領(lǐng)域,沙盒是一種安全機(jī)制,為運(yùn)行中的程序提供的隔離環(huán)境。通常是作為一些來(lái)源不可信、具破壞力或無(wú)法判定程序意圖的程序提供實(shí)驗(yàn)之用[3]。
引用計(jì)數(shù)是計(jì)算機(jī)編程語(yǔ)言中的一種內(nèi)存管理技術(shù),是指將資源的被引用次數(shù)保存起來(lái),當(dāng)被引用次數(shù)變?yōu)榱銜r(shí)就將其釋放的過(guò)程。使用引用計(jì)數(shù)技術(shù)可以實(shí)現(xiàn)自動(dòng)資源管理的目的。同時(shí)引用計(jì)數(shù)還可以指使用引用計(jì)數(shù)技術(shù)回收未使用資源的垃圾回收算法。
引用計(jì)數(shù)的實(shí)現(xiàn)過(guò)程是:當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí),它的引用計(jì)數(shù)為1,每當(dāng)有一個(gè)新的指針指向這個(gè)對(duì)象的時(shí)候,它的引用計(jì)數(shù)就會(huì)加1,而當(dāng)某個(gè)指向它的指針不再指向它時(shí),它的引用計(jì)數(shù)就減1,當(dāng)對(duì)象的引用計(jì)數(shù)為0時(shí),就說(shuō)明這個(gè)對(duì)象不再被任何指針指向了,這個(gè)時(shí)候這個(gè)對(duì)象就應(yīng)該被銷毀,內(nèi)存也就得到了回收。
本app包括小學(xué)數(shù)學(xué)與口算練習(xí)兩個(gè)部分。其中App的小學(xué)數(shù)學(xué)模塊使用科大訊飛的語(yǔ)音合成技術(shù),提供課文朗讀功能,并根據(jù)進(jìn)度控制暫停或播放。此外,計(jì)劃提供目錄方便用戶選擇、跳轉(zhuǎn)章節(jié)??谒憔毩?xí)部分,針對(duì)不同層級(jí)的用戶,計(jì)劃提供5以內(nèi)加減、10以內(nèi)加減以及20以內(nèi)加減法的練習(xí)。本設(shè)計(jì)計(jì)劃充分利用iOS系統(tǒng)[4]的沙盒,對(duì)用戶信息以及系統(tǒng)內(nèi)的部分資源進(jìn)行保存,并利用MVC設(shè)計(jì)模式,對(duì)系統(tǒng)的各模塊的控制器-視圖-模型進(jìn)行分離處理,降低代碼的冗余度,提高可擴(kuò)展性和重復(fù)利用性,可以利用AFNetWorking進(jìn)行網(wǎng)絡(luò)交互,及時(shí)處理用戶請(qǐng)求。并對(duì)一些頁(yè)面做了大規(guī)模的內(nèi)存優(yōu)化,可以最大限度的減少App崩潰的情況。
整個(gè)項(xiàng)目的UI用到了代碼和storyboard兩種不同的界面搭建方式;與后臺(tái)進(jìn)行交互的網(wǎng)絡(luò)請(qǐng)求使用的是POST異步請(qǐng)求;嚴(yán)格遵守MVC設(shè)計(jì)模式;用到了值傳遞、引用傳遞、指針傳遞,使用了正向傳值、反向傳值,其中,反向傳值使用了代理、通知和單例等多種傳值方式。
主界面分為導(dǎo)航控制器和視圖控制器兩大部分。其中,導(dǎo)航控制器用來(lái)顯示App名稱,視圖控制器又分為兩個(gè)模塊,提供兩個(gè)模塊的入口。
小學(xué)數(shù)學(xué)中的課本模塊,是本App的主要模塊,主要是顯示課本內(nèi)容,其中使用了UIScrollView和三個(gè)UIImageView來(lái)顯示上百?gòu)垐D,通過(guò)內(nèi)存優(yōu)化,使這幾百?gòu)垐D占用內(nèi)存極大減少。此外,使用了科大訊飛的語(yǔ)音合成引擎來(lái)實(shí)現(xiàn)課本的朗讀功能,科大訊飛作為中國(guó)最大的智能語(yǔ)音技術(shù)提供商,在智能語(yǔ)音技術(shù)領(lǐng)域有著長(zhǎng)期的研究積累,并在中文語(yǔ)音合成、語(yǔ)音識(shí)別、口語(yǔ)評(píng)測(cè)等多項(xiàng)技術(shù)上擁有國(guó)際領(lǐng)先的成果[5]。
功能方面,除語(yǔ)音朗讀外,也提供了朗讀的暫停與播放功能,用戶只需輕觸下方按鈕即可,也允許用戶在設(shè)置中取消自動(dòng)播放語(yǔ)音功能。此外,用戶除通過(guò)按鈕改變頁(yè)面外,也可以通過(guò)左右滑動(dòng)的收拾實(shí)現(xiàn)。如果用戶開啟了設(shè)置中的保存進(jìn)度功能,當(dāng)用戶點(diǎn)擊左上角按鈕時(shí),程序跳回主界面,這時(shí)程序會(huì)保存當(dāng)前進(jìn)度,當(dāng)用戶下次進(jìn)入該模塊時(shí),自動(dòng)跳轉(zhuǎn)到上次退出前的頁(yè)面。
本設(shè)計(jì)基本完成了預(yù)定實(shí)現(xiàn)的目標(biāo),能夠滿足用戶日常對(duì)學(xué)習(xí)的補(bǔ)充,并能方便的進(jìn)行預(yù)習(xí),方便對(duì)家長(zhǎng)幫助孩子學(xué)習(xí)。在后期的測(cè)試過(guò)程中,出現(xiàn)了界面不夠友好、閃退的情況,最終通過(guò)更換主界面樣式,并對(duì)學(xué)習(xí)課本模塊做了ImageView重用,使內(nèi)存占用大幅減少,很好地解決了問(wèn)題。但是,這個(gè)版本仍然是本系統(tǒng)的一個(gè)初級(jí)版本,由于資金問(wèn)題,沒(méi)有能夠聘請(qǐng)專業(yè)播音員朗讀,在以后的迭代過(guò)程中會(huì)逐一增加網(wǎng)絡(luò)數(shù)據(jù)庫(kù)統(tǒng)計(jì)功能。為了更好的方便學(xué)生學(xué)習(xí),還會(huì)增加不同年級(jí)、不同版本的支持。