Сбой приложения в iPhone4s при загрузке изображений

Я использую SDWebImage для асинхронной загрузки изображений с сервера. Я протестировал приложение в iPhone 5 и 5 с iOS 8.1 и работает нормально, без предупреждения о памяти вообще. Но я дал сборку клиенту (используя iPhone 4s), и он сталкивается с некоторым сбоем при загрузке изображений, к сожалению, у меня нет iPhone 4s, поэтому я не могу понять проблему. Я тестировал в приборах с iPhone5 и вот скриншоты после нескольких прогонов.снимок экрана с использованием iPhone 5И вот мой код для загрузки изображения

-(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;
     }];
}

Я очистил память в didRecdeiveMemoryWarnig метод

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    NSLog(@"memory warning received in voucher");
    [[SDImageCache sharedImageCache] clearMemory];
    [[SDImageCache sharedImageCache] cleanDisk];
    [[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];
}

Но он все еще вылетает в iPhone 4. Может кто-нибудь подсказать мне, что делать?

1 ответ

Решение

Похоже, ваше приложение убивают из-за нехватки памяти. Может быть, попробуйте использовать пул авто-релиза для смягчения любых скачков памяти, так как я думаю, что то, что вы делаете в didReceiveMemoryWarning, не очень помогает в такой ситуации.

Другие вопросы по тегам