ios - UITableView卡顿,app退出到后台再打开,就流畅了?
怪我咯
怪我咯 2017-04-17 17:21:23
0
2
259

我的app有两个主要的tableView,用来展示大量图片:

一个从本地数据库加载数据、显示本地图片,一个从网络加载数据和图片。

本地的采用普通tableView,联网的采用瀑布流(PSCollectionView)来实现,后者是基于tableView的开源类库。

二者的层级结构差不多,都做了同样的优化:复用(UI和数据分离)、提前计算好数据滑动时只获取数值、图片都用SDWebImage异步加载。

本地的rowHeight一致,无需计算;联网的由于是瀑布流,所有cell宽度一致,高度随图片变化,提前从服务器数据表获取所有的图片的长宽比,根据本地要显示的宽度,乘以比例得出高度,算好每个cell的高度,存为数组,滑动时从数组直接获取当前cell的高度。

现在的情况是这样的:

真机调试,iOS9.2,iPhone6s。我启动app,进入本地tableView页面,滑动很流畅。然后我进入联网的页面,滑动时候明显有卡顿。这时我切换到本地的页面,发现本地页面变的和联网页面一样卡顿。

并且... 只要按home键退出到后台,再马上打开,这时候居然两个tableView都非常流畅,一点都不卡,瀑布流怎么上拉加载新的数据都不会卡。而且有个小细节就是从后台回到前台的一瞬间,tableView很轻微的闪了一下,有时候还带点位移。我估计这点很关键。这一瞬间,系统到底做了什么操作呢?

我的个人测试和分析:

我去掉图片加载,发现情况差不多,证明与图片关系不大。关键点在于为什么两个tableView滑动流畅性被绑定了???退出到后台的瞬间,系统做了什么动作导致了tableView变流畅,我想这个应该就是我的app联网页面tableView卡顿的解决办法吧。

有没有人遇到过类似的问题,或者能看出问题所在,感谢指点!

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(2)
小葫芦

다운로드 작업을 다른 스레드에 배치하고 메인 스레드를 차단하지 마세요. 또한, 사진 수가 많은 경우 UITableViewCell의 원본 imageView를 대체하기 위해 사용자 정의 보기를 사용하는 것을 고려할 수 있습니다. 또한 투명한 뷰를 설정하지 마세요

小葫芦

메모리 누수가 있는 것으로 추정됩니다. 이에 대해 자세히 살펴봐야 하며, 모든 뷰가 투명해서는 안 됩니다. 슬라이드가 잠시 후에 멈추기 때문에 메모리 누수를 일으킨 강력한 참조가 있음이 분명합니다. 동시에 다운로드되는 사진 수를 조절하는 것이 좋습니다. 이유를 찾으시면 알려주세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!