2012-02-17 3 views
3

성능이 문제가 있습니다. JPG를로드하면 (예 : 응용 프로그램에 PNG 파일 형식을 제공 할 수 없음) 디스크에서 [UIImage imageWithContentsOfFile: ]으로 이미지를 가져오고 UIImage 전역 NSCache에서 캐시 된 이미지를 [UITableViewCell drawRect: ]에 사용하십시오. 이 방법은 사용자 [UIImage imagedNamed:]보다 훨씬 느립니다.UIImage + NSCache 대 [UIImage imageNamed :]

악기의 "시간 프로필"로 성능을 분석 한 경우 첫 번째 그림에서 볼 수 있듯이 JPEG는 항상 [DBArtistTableViewCell drawRect:]에서 디코딩됩니다. [UIImage imageNamed:] 솔루션을 사용하는 두 번째 그림에서 JPG는 압축이 풀리지 않습니다.

NSCache + UIImage 솔루션 : NSCache + UIImage

[UIImage imageNamed] 솔루션 UIImage imageNamed

짧은 질문은 : 예합니다 ([UIImage imageNamed:] 솔루션보다 UIImage + NSCache 솔루션 느린과 [UIImage imageNamed:] 방법과 마법은 무엇인가 이유 나는 캐싱을 알고 있지만 나머지는 무엇인가?)

돕기위한 Thx.

답변

3

UIImage imageNamed은 데이터가 압축 해제되어 캐시에 저장되는 반면 UIImage imageWithContentsOfFile은 압축 된 데이터를로드하지만 표시해야 할 때까지 압축을 풀지 않습니다.

+0

거기에 UIImage를 [UIImage imageWithContentsOfFile]에서 압축 해제하는 방법이 있습니까? – CarlJ

+1

당신을 도울 수있는이 질문에 대한 의견의 일부 토론 : http://stackoverflow.com/questions/1815476/cgimage-uiimage-lazily-loading-on-ui-thread-causes-stutter – ikuramedia