2010-03-21 4 views
0

장치 및 시뮬레이터에서의 테스트에서 dequeueReusableCellWithIdentifier : nil을 두 번 이상 반환합니다 (15 행이있는 테이블의 경우 약 5 회). 이게 정상인가? 나는 인상을 받고 있지 않다. 그것은 무의미한 것이다. 매우 처음?UITableView dequeueReusableCellWithIdentifier : nil을 두 번 이상 반환합니다.

+0

나는 방법의 목적을 오해 할 수도 있습니다. 나는 왜 당신이 얼마나 많은 시간을 돌려주지 않을 지 신경 쓰지 않을 것이다. –

답변

1

tableView 및 collectionView에는 둘 다 제한이 있습니다. 빨리 스크롤하거나 해당 셀에 많은 요소가있는 경우 (준비하는 데 시간이 오래 걸림) iOS는 cellForIndexPath가 호출 될 때 재사용 가능한 셀을 빠르게 준비하지 못할 수 있습니다.

따라서 tableView의 경우 dequeueReusableCellWithIdentifier:은 nil을 반환합니다. CollectionView dequeueReusableCellWithReuseIdentifier:forIndexPath:의 경우 새 개체가 생성됩니다.

3

UITableView 클래스는 dequeueReusableCellWithIdentifier:의 동작을 구현합니다. 올바른 장소 (예 : tableView:cellForRowAtIndexPath:)에서 호출하는 경우 재사용 가능한 셀을 반환하거나 반환하지 않을 수 있습니다.

특정 동작으로 인해 충돌 또는 성능 문제가 있음을 증명할 수 없다면 걱정할 필요가 없습니다.

2

테이블 뷰는 플라이 웨이트 패턴을 사용하여 셀을 처리합니다. 자신에게 익숙하다면 무슨 일이 일어나고 있는지, 왜 일어나는지 더 잘 이해하게 될 것입니다.

관련 문제