iOS - 캐시 [SDImageCache] Image에 대한 질문
UIImage *image = [UIImage imageWithData:data];
이 방법은 좋지 않다. SDWebImage를 사용한 사람들은 왜 안 좋은지 알 수 있다. 그림은 서버에서 다운로드할 수 있고 그림이 중복될 수 있으니 SDWebImage로 캐시를 한다. 다음 요청은 그림의 유일한 표시로 로컬에서 먼저 가져올 수 있다. 만약에 있으면 다시 요청하지 않고 바로 돌아오면 된다. 다음은 그림 다운로드에 성공한 후에 돌아오는responseObject 데이터 흐름이다.
UIImage *responseImage = [UIImage sd_imageWithData:responseObject];
[[SDImageCache sharedImageCache] storeImage:responseImage forKey:@"imageKey- " completion:nil];
캐시가 완료되면 UIImageView의 이미지에 responseImage 값을 부여합니다.
imageView.image = responseImage;
그리고 테스트를 시작했습니다. 이어서 문제를 발견했습니다. 그림 전환을 요청할 때 [그림이 중복되지 않음] 실행 메모리가 계속 증가했습니다. 제가 이미지 뷰를 사용할 때.image = responseImage; 이 줄의 주석을 지운 후 메모리가 모두 정상이다.요청한responseImage를 이미지뷰에 직접 할당하면 이 메모리 폭등 문제가 발생하는 것을 발견했습니다. 이어서 다음과 같은 수정을 했습니다.responseImage를 가져와 캐시를 로컬처럼 한 다음에SDImageCache에서 캐시된 새로운 UIIImage:imageResponseCache를 꺼내서 이미지ResponseCache를 이미지뷰에 할당합니다.
UIImage *responseImage = [UIImage sd_imageWithData:responseObject];
[[SDImageCache sharedImageCache] storeImage:responseImage forKey:@"imageKey- " completion:nil];
UIImage *imageResponseCache = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:@"imageKey- "];
imageView.image =imageResponseCache;
상술한 실현을 통해 메모리는 모두 정상이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.