ios - 关于tableview一个场景的疑问
巴扎黑
巴扎黑 2017-04-17 17:32:55
0
6
372

有一个tablview列表, 打算显示类似通讯录的联系人列表, 右边是A-Z的导航, 可能数据量太大。假如一次从api返回10000个信息, 我的疑问是, 一次初始化10000个cell, 可行吗? 因为数据太多了, 本来想分页读取, 但是这种显示方式, 用分页不太合适。 或者有什么思路?

巴扎黑
巴扎黑

모든 응답(6)
阿神

먼저 시스템 tableView의 셀에는 재사용 메커니즘이 있습니다. 표준 루틴에 따라 작성하면 셀의 레이아웃이 모두 동일한 경우 10,000개의 셀을 한 번에 초기화하지 않습니다. 내용이 일관되지 않습니다.

의 해당 셀은 화면 표시 범위에만 존재합니다.
阿神

로컬 데이터를 사용해 볼 수 있습니다

Peter_Zhu

서버 측을 수정해야 하며 각 요청마다 약 30~40개의 데이터를 로드합니다.
프런트엔드 테이블뷰에서는 드롭다운 로딩을 통해 여러 데이터가 한 번에 로딩됩니다.

Peter_Zhu

질문 19번과 20번을 살펴보세요: http://www.henishuo.com/ios-interview-middle-two/

한 번에 이렇게 많은 데이터를 보유하는 것은 확실히 불가능합니다. tableview는 scrollview에서 상속되고 콘텐츠 크기를 얻으려면 이를 계산해야 하기 때문에 데이터 소스로 사용되는 데이터 조각 수, 행 높이를 몇 번 계산하면 매우 멈춰 있거나 처음으로 기다리는 데 오랜 시간이 걸립니다.

권장사항: 처음에는 항목 10개 또는 20개 등 적은 양의 데이터만 로드하세요. 그런 다음 높이를 캐시하므로 항목이 10,000개라도 높이가 캐시된 후에는 중단 현상이 발생하지 않습니다(서식 있는 텍스트가 많은 항목 제외).

글에서 행 높이를 자동으로 계산하고 캐시하는 방법을 살펴보겠습니다!

小葫芦

tableviewcell의 재사용 메커니즘에 따르면 이 부분은 고려되지 않는 것 같은데요? 실행해서 메모리를 얼마나 차지하는지 확인해 보세요...

迷茫

셀 재사용 메커니즘에서는 이 문제를 고려할 필요가 없습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿