1. 程式人生 > >直播APP開發之iOS開發中的列表優化思路

直播APP開發之iOS開發中的列表優化思路

uic 異步化 軟件公司 死機 直播 隱藏 屬性 頁面 底層

APP開發中,列表可能是平時我們打交道最多的UI控件之一,其重要性不言而喻,對其性能的優化同樣至關重要。而對於iOS開發,列表就是我們常說的UITableView / UICollectionView。在進行直播APP開發時針對於列表的優化自然是必不可少的。
這裏以UITableView為例簡略介紹一下列表優化思路。
(1) cell復用。這是每一個iOS開發者都非常熟悉的一部分內容。我們經常在cellForRowAtIndexPath:中為每一個cell綁定數據,實際上在調用cellForRowAtIndexPath:的時候cell還沒有被顯示出來,為了提高效率我們應該把數據綁定的操作放在cell顯示出來後再執行,可以在tableView:willDisplayCell:forRowAtIndexPath:(以後簡稱willDisplayCell)方法中綁定數據。註意willDisplayCell在cell 在tableview展示之前就會調用,此時cell實例已經生成,所以不能更改cell的結構,只能是改動cell上的UI的一些屬性(例如label的內容等)。
(2) 減少視圖數目。我們在cell上添加系統控件的時候,實際上系統都會調用底層的接口進行繪制,大量添加控件時,會消耗很大的資源並且也會影響渲染的性能。當使用默認的UITableViewCell並且在它的ContentView上面添加控件時會相當消耗性能。而且在初始化cell的時候就盡量把需要顯示的內容全部創建完畢,然後根據需要顯示或者隱藏,不要動態創建控件。
(3) 異步操作。我們時常會看到這樣一個現象,就是加載時整個頁面卡住不動,怎麽點都沒用,仿佛死機了一般。原因是主線程被阻塞了。所以對於網路數據的請求或者圖片的加載,我們可以開啟多線程,將耗時操作放到子線程中進行,異步化操作。
(4) 按需加載。滑動很快時,只加載目標範圍內的cell,這樣按需加載(配合SDWebImage),極大提高流暢度。舉個簡單的例子:
技術分享圖片
當然別忘了在cellForRowAtIndexpath:代理方法中加入以下幾句
技術分享圖片
對於專業從事直播APP開發的軟件公司的技術人員來講,列表優化是常常用到的。當然,其他的APP開發如果采用相同控件的話,本篇優化思路同樣適用。

直播APP開發之iOS開發中的列表優化思路