2014-10-16 8 views
-2
NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[getImage objectAtIndex:indexPath.row]]]; 
cell.imageView.image = [UIImage imageWithData:imageData]; 

서버에서 이미지를 가져 와서 UITableView에 표시하고 있습니다. 나는 스크롤이 매우 느리다는 것을 알고있다. 어떻게 제거합니까?테이블 뷰가 천천히 스크롤됩니다.

+0

가능한 복제본 [각 셀에 이미지를로드 할 때 테이블보기에서 스크롤 속도를 높이는 방법] (http://stackoverflow.com/questions/823475/how-to-increase-the- 테이블 뷰에서의 이미지의 스크롤 속도 – Fogmeister

답변

0

. 초당 60 프레임을 유지하려는 경우에는 몇 초 (또는 그 이상)가 걸릴 수 있습니다. 즉, tableView:cellForRowAtIndexPath: 메서드는 1/60 초 또는 16 밀리 초 미만으로 실행되어야하므로 네트워크 호출이 문제가되지 않습니다.

이 코드를 작성하는 적절한 방법은 Grand Central Dispatch 또는 다른 메커니즘을 사용하여 데이터를 비동기 적으로로드하거나 디스크에 캐시하거나 NSCache을 사용하여 캐시 한 다음 새로로드 할 수 있도록 테이블을 다시로드해야한다고 알립니다 데이터.

+0

GCD를 사용하여 속도를 높이는 방법. –

+0

그랜드 센트럴 디스패치를 ​​소개하는 마이크 애쉬의 게시물은 좋은 출발점입니다. 그것을 사용하는 방법에 대해 질문이 있으면 새로운 질문을 시작해야합니다. https://www.mikeash.com/pyblog/friday-qa-2009-08-28-intro-to-grand-central-dispatch-part-i-basics-and-dispatch-queues.html – wjl

0

iOS가 tableview의 총 셀 수를 줄이기 위해 데이터 소스 메서드가 최근에 표시된 셀이라도 자주 호출되므로 더 이상 표시되지 않는 셀이 삭제되고 tablview 데이터 소스 메서드에 다시 작성하도록 요청합니다. 그들이 보이게 될 때.

모든 세포 개체수를 호출 할 때 서버에서 가져 오는 경우 속도가 느려질 수 있습니다 (약식).

캐싱을 구현하고 캐시에서 콘텐츠를 채 웁니다.

[[NSData alloc] initWithContentsOfURL:...] 

이 데이터를 얻을 수있는 네트워크를 통해 밖으로 도달한다 :이 코드를 호출

관련 문제