在本章,你將做下面這些事情:

在實(shí)例中使用第2章介紹的測試工具
在例子中一步一步的對滾動(dòng)性能進(jìn)行優(yōu)化
使用以下技術(shù)對UITableView進(jìn)行優(yōu)化
1) 使用基本的技術(shù)優(yōu)化UITableView中簡單的cells
2) 通過代碼使用核心技術(shù)在cell中繪制view
3) 使用基本的技術(shù)來優(yōu)化需要像正在編輯,重排序等動(dòng)畫的cell
4) 開發(fā)者需要知道的一些其他技術(shù)
iPhone應(yīng)用程序通常通過列表的形式來顯示數(shù)據(jù)。蘋果為開發(fā)者提供了非常好用的工具:UITableView 和 UITableViewCell。如果開發(fā)者只是想使用一些基本的功能,如在左邊顯示一張小圖片,中間顯示文本,那么蘋果提供的默認(rèn)控制就能夠很好的滿足要求了。但是如果你想自定義一些東西,比如顯示2張或3張圖片,把文本放在不同的地方,你就會遇到問題。如果這樣的話,你遲早會遇到UITableView性能方面的一些問題,尤其是在像iPhone 3G這種老設(shè)備上。
例子介紹
在這個(gè)例子中,我會基于兩個(gè)主要因素來衡量性能:UITableView dequeue一個(gè)cell,創(chuàng)建一個(gè)cell的速度,或cell返回給操作系統(tǒng)的速度;操作系統(tǒng)渲染你的cell,然后顯示在機(jī)器上的速度。第一個(gè)使用NSLog就可以測量出來;第二個(gè)比較復(fù)雜,只能通過CoreAnimation進(jìn)行測量。
我將用兩個(gè)不同的例子來說明問題。一個(gè)只包含了圖片和文字;另一個(gè)包含了很多復(fù)雜的子view。通過這兩個(gè)例子,你會發(fā)現(xiàn)有很多不同的方法來優(yōu)化UITableView滾動(dòng)時(shí)的性能。
在本章結(jié)束時(shí),我會列出很多重要的知識點(diǎn),由于時(shí)間有限,我不會做詳細(xì)的介紹。這些并不是一些常見的錯(cuò)誤,但是如果某個(gè)開發(fā)者因?yàn)榇中亩噶似渲械囊恍╁e(cuò)誤,有可能花上一整天的時(shí)間測試和查找問題。我想確保你已經(jīng)有足夠的技能和知識來處理各種情況。
有時(shí)候優(yōu)化非常簡單,只需要在代碼中做一些小小的改動(dòng)。然而在其他情況下,比如第二個(gè)例子,你需要重寫整個(gè)代碼來,從而達(dá)到更好的性能。我希望在例子介紹完后,你對整個(gè)程序的架構(gòu)有一個(gè)非常清晰的認(rèn)識,這樣你在開始的時(shí)候就能夠做出正確的決定,而不需要重寫代碼。
復(fù)習(xí)測試工具
在本章,你將使用CoreAnimation工具對iphone OS的渲染性能進(jìn)行測試。這能幫助你了解問題是出現(xiàn)在計(jì)算過程中還是在顯示過程中。第2章已經(jīng)介紹了這個(gè)工具,所以本章只進(jìn)行一個(gè)簡短的回顧。
圖 3-1 顯示了CoreAnimation工具的主視圖,運(yùn)行時(shí)有3個(gè)部分你需要觀察,圖3-2顯示了性能的參數(shù)值。

圖 3-1 CoreAnimation 工具的主要部分

圖 3-2 最近的性能顯示
第一個(gè)例子
第一個(gè)例子將會一步一步的展示如何優(yōu)化UITableView的滾動(dòng)性能。最初版本的源代碼包含了我從很多開發(fā)者那邊搜集到的性能使用上的錯(cuò)誤。在這個(gè)過程中,你會看到在每一步優(yōu)化后,性能都會有所提升。
介紹第一個(gè)例子
如圖3-3,你有一個(gè)普遍而又實(shí)際的問題,那就是你需要開發(fā)一個(gè)UITableView,在每一個(gè)cell中有一張圖片和一個(gè)文本塊。我將帶你查看這個(gè)例子的源代碼。讓我們看一下類似Facebook的應(yīng)用;應(yīng)用需要一張圖片顯示頭像,需要另一張圖片顯示用戶分享的鏈接內(nèi)容。這個(gè)應(yīng)用同樣也需要一張更小的圖片來顯示cell中的圖標(biāo)。在第一個(gè)測試中,請參考SlowPerformanceTableView這個(gè)工程。

圖 3-3 第一個(gè)例子的應(yīng)用
標(biāo)準(zhǔn)測試
在項(xiàng)目開始之前,你必須知道你的最終目標(biāo);在這個(gè)例子中,你要達(dá)到的目標(biāo)就是有一個(gè)很好的性能,當(dāng)在滾動(dòng)和使用你的應(yīng)用時(shí),你可以帶給用戶一個(gè)很好的體驗(yàn)。因此,通過運(yùn)行一個(gè)正常的沒有自定義的UITableViewCell,它會按需加載一張簡單的圖片并會對圖片進(jìn)行重用,表格 3-1顯示了運(yùn)行時(shí)的日志。

表格 3-1 運(yùn)行例子的結(jié)果
用CoreAnimation進(jìn)行測試,每秒渲染的幀數(shù)(fps)的最佳性能是60fps(數(shù)字越高,性能越好)。對于一個(gè)標(biāo)準(zhǔn)的UITableViewCell,通常的速度在 55-60fps之間;這應(yīng)該是你的目標(biāo)之一。另一個(gè)目標(biāo)是確保預(yù)加載的時(shí)間足夠的小。當(dāng)總體時(shí)間減少了,cell預(yù)加載的時(shí)間同樣會減少。但是,減少cell預(yù)加載的時(shí)間更簡單,因此在這個(gè)例子中,主要集中在如何減少預(yù)加載的時(shí)間。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章題目:UITableView性能提升和優(yōu)化(第3章)之一-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://chinadenli.net/article26/diiijg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、搜索引擎優(yōu)化、關(guān)鍵詞優(yōu)化、網(wǎng)站維護(hù)、外貿(mào)網(wǎng)站建設(shè)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)