서버에서 이미지 비동기를 다운로드하려면 SDWebImage
을 사용하고 있습니다. 서버의 이미지 크기는 ~ 1.5 ~ 2MB입니다.이 이미지를 UICollectionView
에 표시하고 있습니다. 몇 번 실행하면 메모리 경고 및 응용 프로그램 충돌이 발생합니다. 처음에는 이미지를 처음 다운로드하고 컬렉션보기를 위아래로 스크롤하면 약간의 시간이 걸립니다. 다음은 내 코드 -SDWebImage를 사용하여 큰 이미지를 다운로드하는 중 앱이 다운 되나요?
-(void)setImageWithUrl:(NSURL*)imgurl onImageView:(UIImageView*)image prograssive:(BOOL)progressive
{
__block UIActivityIndicatorView *activityIndicator;
__weak UIImageView *weakImageView = image;
SDWebImageOptions opt;
if (progressive) {
opt = SDWebImageProgressiveDownload;
}
else
opt = SDWebImageRetryFailed;
[image sd_setImageWithURL:imgurl placeholderImage:[UIImage imageNamed:@"default_image"] options:opt progress:^(NSInteger receivedSize, NSInteger expectedSize)
{
if (!activityIndicator)
{
[weakImageView addSubview:activityIndicator = [UIActivityIndicatorView.alloc initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]];
activityIndicator.center = CGPointMake(weakImageView.frame.size.width /2, weakImageView.frame.size.height/2);
// activityIndicator.center = weakImageView.center;
[activityIndicator setBackgroundColor:[UIColor clearColor]];
[activityIndicator startAnimating];
}
}
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)
{
[activityIndicator removeFromSuperview];
activityIndicator = nil;
}];
}
및 AppDelegate
에 -
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
[[SDImageCache sharedImageCache] clearMemory];
[[SDImageCache sharedImageCache] cleanDisk];
[[SDImageCache sharedImageCache] clearDisk];
[[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];
}
하시기 바랍니다없는 이미지를 고해상도 (3000 개 이상의 픽셀 폭) .FOR 그 중 하나가 4256 * 2832와 크기를 가지고 예이다 979KB는 메모리 경고를 생성합니다. 모든 도움이나 제안을 부탁드립니다. 편집 : - 내 앱이 메모리 부족으로 인해 죽어 가고 있지만 iPhone4 이하 버전에서만 작동합니다. (iPhone5 이상에서 정상적으로 작동합니다.) 큰 이미지를 다운로드하거나 다운로드를 완료하면 갑작스런 메모리가 있습니다. 스파이크 (~ 25MB에서 ~ 90MB로 이동) 및 앱 충돌. 어떤 제안을해야합니까?
크래시가 발생한 위치를 표시하고 크래시가 발생했을 때 디버거의 정보를 게시 할 수있는 경우 (스택 추적이있는 크래시 로그) – Volker
크래시 로그가 없으면 Xcode에 메시지 창이 나타납니다 앱이 예기치 않게 중지되었습니다 (iOS에서 메모리 사용량이 많아 앱이 종료 됨). – Bharat
SDHebImage Github 페이지에이 문제를 게시합니다. 그것의 개발자로부터주의를 끌기 위해서. –