2012-04-17 4 views
1

내 응용 프로그램에서 300 이미지 (400 kB)를 표시하는 스크롤보기를 사용합니다. 2 분 정도 걸리므로 위아래로 스크롤하면 부드럽 지 않습니다.ScrollView가 너무 느립니다 - 메모리 관리 문제가 있습니까?

어떻게하면이 문제를 해결할 수 있습니까?

참고 : 스크롤바 끝으로 한 번 스크롤하면 부드럽게 나타납니다. 스크롤 문제는 처음에만 나타납니다.

+0

질문은 어떻게 메모리 관리와 관련이 있습니까? 앱 프로파일 링을 해봤습니까? – trojanfoe

답변

0

봅니다 (당신이 당신의 이미지를로드 할 경우) 부하 기능이 추가. while 또는 for 루프를 사용하여 이미지를로드하는 경우이 코드를 루프에 추가하십시오.

NSURL *url=//here url for your image 
dispatch_queue_t currentQueue = dispatch_get_current_queue(); 
dispatch_queue_t dataConvertorQueue = dispatch_queue_create("Fetching images", NULL); 
dispatch_async(dataConvertorQueue, ^{ 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    dispatch_async(currentQueue, ^{ 
     //replace imageView with your imageView outlet 
     imageView.image = [[UIImage alloc] initWithData:data]]; 
    }); 
}); 
dispatch_release(dataConvertorQueue); 

이 코드는 URL에서 이미지를 가져와 표시하는 데 도움이되며 테이블 뷰와 함께 잘 작동합니다. 정확히 원하는 것은 아니 겠지만 어떻게 할 지에 대한 아이디어를 줄 것입니다. 희망이 당신을 도울 것입니다.

0

모든 이미지를 미리로드하지 마십시오. 순간에 보여줄 이미지와 다음 + 마지막 사진을로드하기 만하면됩니다.

지금까지 내가 scrollview로드/표시 할 때 모든 이미지를로드 이해합니다. 이미지가 많으므로 메모리에 3 개의 이미지를로드/저장하면 훨씬 빠르고 더 많은 메모리를 절약 할 수 있습니다. 이것은 표시되는 이전/왼쪽 이미지이며 표시되지 않습니다 - 현재 표시된 이미지 및 보이지 않는 다음/오른쪽 이미지입니다.

왼쪽으로 이동/스 와이프하면 기본적으로 스크롤보기가 왼쪽으로 이동하고 이미로드 된 오른쪽 이미지가 표시됩니다. 백그라운드에서 가장 오른쪽에있는 이미지를 불러오고 가장 왼쪽에있는 이미지를 할당 해제합니다.

항상 최대 4 개의 이미지가로드되었습니다.

좋은 시각적 예와 샘플 코드를 보려면 WWDC 2011 - 세션 104 고급 스크롤보기의 무한 스크롤보기를보십시오.

+0

더 설명 할 수 있습니까? 나는 잘 이해한다. – yatanadam

관련 문제