日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TableView的优化

發布時間:2023/11/29 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TableView的优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:什么是TableView的優化以及為什么要優化

?

1)CPU(中央處理器)和GPU(圖形處理器):CPU主要從事邏輯計算的一些工作;GPU主要從事圖形處理方面的工作。

?

2)CPU和GPU的共同點:

?

都有自己的緩存體系,都有自己的數字和邏輯運算單元,都為了完成計算任務而設計。

?

3)CPU和GPU的不同點:

?

CPU的核少但是核內空間非常大,能夠處理復雜的邏輯。

?

GPU核多但是每個核的空間相對較小,故而處理復雜邏輯的空間較少。

?

針對CPU和GPU的上述不同,面對一個程序系統分配給CPU的往往是較為復雜的邏輯運算,分配給GPU的通常是圖片等控件的操作。

?

4)上述不同而導致的結果:

?

當程序員為CPU編程時,傾向于用復雜的邏輯結構優化算法來減少計算任務的時間Latency。

?

為GPU編程->利用其能夠處理海量數據的優勢,來提高總的數據的吞吐量,來掩蓋Latency。

?

5)為什么優化?

?

學術上:平衡CPU和GPU在工作上的壓力,從而正確的使用CPU和GPU的資源,使他們均勻的負載 這樣子使得FPS保持在60幀左右,最終使得用戶體驗更加美好。

?

非學術上:掌握UITableView能夠給面試加分。

?

二:UITableView的工作原理

?

1)tablewView代理方法的執行順序。

?

UITableView返回多少組----->每組返回多少行cell--->計算每個cell的高度---->指定cell(cell布局)

?

2)cell的復用。

?

原理:當滾動列表時(UITableView)部分cell會移除Window 但是移除的cell并沒有被立即釋放 而是放到了一個叫做復用池的對象池中,處于待定狀態,當有新的cell要出現在Window界面上時,首先會從復用池中尋找是否有相同類型的cell,如果有直接拿過用(最直觀的表現是新出現的cell有沒有開辟新的內存空間),如果沒有,創建一個新的類型的cell,所以UITableView可能擁有多種類型的cell,復用池也可能存儲著多種類型的cell,系統通過定義reuseIndentifer作為每個cell的唯一標示符來確定即將出現的cell復用何種類型的cell。

?

三:UITableView的具體優化

?

1)盡量使用cell的復用。

?

使用cell的復用,可以減少內存的開銷,沒有開辟新的空間,也減少了一些計算量。

?

2)對于不定高的cell 提前將每個cell的高度存入數組,出現一個cell的時候,直接從數組中拿出確切的高度即可,不用臨時計算cell的高度。

?

圖文混排、評論 。

?

對于固定高的cell和不定高的cell同樣適用。

?

3)涉及網絡請求加載數據在UITableView滑動結束的時候在進行加載數據(渲染)避免卡頓。

?

1、UITableView繼承自UIScrollView,繼承了后者的方法。

//滑動結束的方法

- (void)scrollViewDidEndDragging:(UIScrollView?*)scrollView willDecelerate:(BOOL)decelerate

//減速結束之后的方法

- (void)scrollViewDidEndDecelerating:(UIScrollView?*)scrollView

?

2、if(self.tableView.dragging==NO&&self.tableView.decelerating==NO)在tableView必須實現的二個方法中(加載cell的方法中)將數據的渲染寫在上述if語句中。

?

4)對于tableView的自定義控件 尤其是UIImageView,盡量減少使用圓角,陰影等layer屬性,盡量減少使用alpha(透明度)來設置透明度,(在項目開發中,讓UI設計師設計原圖就是帶圓角的圖) 陰影,圓角這些layer效果都是在GPU中完成的。

?

1、當多個視圖重疊時,GPU會進行合成渲染,而渲染的最慢的操作就是混合,因此當視圖結構太過復雜,就會大量消耗GPU的資源,所以當一個空間本身是不透明,注意設定alpha為1,這樣可以避免無用的alpha通道合成,降低GPU的負載。

?

2、對控件設置cornerRadius后對其進行clip或mask操作時 會導致offscreenrendering這個也是在GPU中進行的 如果在滑動時 圓角對象太多 回到GPU的負載大增幅。

?

這時我們可以設置layer的shouldRasterize屬性為YES,可以將負載轉移給CPU 更徹底的是直接使用帶圓角的原圖。

?

5)盡量使用懶加載

?

又稱為延遲加載 實際上是重寫某個對象的getter方法 原理:程序一開始并不對它進行初始化 而是在用到他的時候 才為他開辟內存供它使用。

?

好處:

?

1、不必將創建的對象的代碼全部寫在ViewDidLoad中,代碼可讀性強。

?

2、每個控件的getter方法,分別負責各自的實例化處理,代碼彼此之間獨立性強 松耦合。

?

6)減少返回給的cell里面的處理邏輯和處理時間。

?

驢媽媽為例:各個UI控件整合到一起,實際上只有一個控件。

?

7)設置每個cell的opaque屬性 ----面試亮點

?

opaque意思是不透明的 渾濁的 有YES和NO二個結果

?

alpha 透明度

?

如果控件本身不透明,我們設置opaque為YES。

?

8)分段加載數據

?

設置分頁加載數據,也就是上拉刷新和下拉加載。

?

轉載于:https://www.cnblogs.com/fengmin/p/5497082.html

總結

以上是生活随笔為你收集整理的TableView的优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日日撸视频| 伊人久久影院 | 国产视频在线观看网站 | 五月天综合社区 | 日本aa大片 | 朝桐光一区二区三区 | 欧洲黄色网| 青青青在线观看视频 | 日韩在线观看免费高清 | 玖玖玖精品 | 熟妇人妻中文字幕无码老熟妇 | 亚洲一区二区福利 | 懂色av | 粗大的内捧猛烈进出视频 | 亚洲国产精品久久久久 | 欧美三级不卡 | 国产中文在线视频 | 午夜国产福利在线 | 久久激情婷婷 | 中文字幕在线国产 | 成人v精品蜜桃久一区 | 亚洲五月综合 | 毛片全黄 | 亚洲自拍p | 国产一区二区三区麻豆 | av大帝在线观看 | 成人一区二区三区视频 | 亚洲国产欧美日韩在线 | 国产一区二区免费在线观看 | 帮我拍拍漫画全集免费观看 | 国产一区久久久 | 在线免费观看视频 | 一二区免费视频 | a v视频在线播放 | 国产精品怡红院 | 亚洲天堂一区二区三区四区 | 亚洲人精品午夜射精日韩 | 手机在线视频一区 | 亚洲色图插插插 | 日韩欧美国产成人精品免费 | 五月天婷婷激情 | 精品无码在线视频 | 东北少妇不戴套对白第一次 | www.亚洲在线| 亚洲一区二区三区黄色 | 韩国三级一区 | 天天影视综合 | 国产一区二区三区免费在线观看 | 嫩草影院菊竹影院 | 凹凸精品熟女在线观看 | 欧美成人三级在线观看 | 欧美日韩免费 | 久久99精品国产91久久来源 | 日韩理论视频 | 亚洲7777| 97超碰在线播放 | 国产97视频 | 在线能看的av | 国产一级网站 | 日韩视频在线观看视频 | 性猛交娇小69hd | 黄色污污网站在线观看 | 国产成人小视频 | 久久精品视频在线免费观看 | 激情视频网站 | 在线免费观看a级片 | 成人免费公开视频 | 一起操网站 | 午夜精品一区二区三区在线播放 | 精品国产一区三区 | 午夜色图| 1区2区3区在线观看 久久久久久久久久久影院 成人网址在线观看 | 欧美老肥妇做.爰bbww视频 | 欧美jizzhd精品欧美18 | 欧美黑人巨大xxx极品 | 精品一区二区在线视频 | 天天爽天天插 | 亚洲av无码国产精品色午夜 | 成年人福利网站 | 午夜有码 | 在线免费精品 | 又嫩又硬又黄又爽的视频 | xx69欧美 | 欧美一二三四五区 | 俄罗斯毛片 | 亚洲精品国产精品乱码不卡 | 天天色天天操天天射 | 国产极品尤物 | 免费麻豆国产一区二区三区四区 | 怡红院男人天堂 | 女人被狂躁60分钟视频 | 午夜合集 | 熟妇熟女乱妇乱女网站 | 黄视频免费在线看 | 丁香六月久久 | 在线少妇 | 欧美怡红院视频 | 88国产精品 | 中出精品 |