2014-12-30 1 views
0

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

-(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 4s.Can любой один Guid мне, что делать?

+1

Добавить Crashlytics для вашего тестового приложения и собрать отчет о сбое, а затем проанализировать крах будет самым устойчивым решением. –

+0

Я пытаюсь войти в систему, но он говорит «вы в списке», у меня нет учетной записи Crashlytics и вы пытаетесь создать, но не получили приглашения. – Blios

+0

Возможно, это поможет решить проблему памяти: http://stackoverflow.com/questions/26921227/table-view-images-never-being-released/26925176#26925176 – Kampai

ответ

0

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