2016-04-07 10 views
0

Ich verwende SDWebImage, um Bild Async vom Server herunterzuladen.Einige Bilder auf dem Server sind von der Größe (1772x1476 Pixel.) Ich zeige diese Bilder auf UICollectionView. Ich bekomme Speicherwarnung und App stürzt nach mehreren Lauf.Einige Male passiert es, wenn Bilder zum ersten Mal heruntergeladen und einige Zeit, wenn ich die Sammlung Ansicht nach oben und unten scrollen. Hier ist mein Code-App beim Herunterladen von großen Bildern mit SDWebImage

ich auf meinem x Code Warnung bin immer wie unten Bild

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 

    UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath]; 

[Mainimage sd_setImageWithURL:[NSURL URLWithString: Obj.imageYH] placeholderImage:[UIImage imageNamed:@""]]; 

    return cell; 
} 

enter image description here

+0

Ich glaube fest, dass dieser Fehler nicht wegen des Herunterladens von Bildern ist. – Hemang

+0

was ist dann die Ursache? – Krish

+1

Hi Krish, ich bin es wieder. Lassen Sie uns ein paar Berechnungen anstellen. Ihr 1772 x 1476 Pixel großes Bild hat während des Downloads ziemlich viel RAM verbraucht. Der ausgegebene Arbeitsspeicher beträgt 1772 x 1476 x 24 (Bit)/8 = 7846418 Bytes = 7662 Kb = 7 MB. Da das Gerät nur über einen begrenzten Arbeitsspeicher verfügt, sollten Sie kein so großes Foto laden, um den Speicher auszulasten. Ziehen Sie in Betracht, das Bild auf der Serverseite zu vergrößern oder laden Sie nicht mehrere große Fotos gleichzeitig. Sie können das Verhalten im Xcode-Speichermonitor bestätigen. – Raptor

Antwort

0

Wenn Ihre App nicht eine volle Größe Bild zu zeigen brauchen, dann ist es immer ein Gute Praxis, um es zu verkleinern und dann zu zeigen. Hier ist ein Beispiel, was zu tun ist.

SDWebImageManager *manager = [SDWebImageManager sharedManager]; 
[manager downloadWithURL:url delegate:self options:0 success:^(UIImage *image) 
{ 
    //Scale down the image here and then set to your view. 
} 

Es sollte Ihnen helfen, die Speicherprobleme zu reduzieren.

+0

hallo Ruchira Randana du da? – Krish

+0

Hallo @Krisch. Funktioniert es nicht? –

+0

nein funktioniert nicht und du erinnerst dich an mich, Bruder? – Krish

0
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 

      UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath]; 

    [Mainimage setImageWithURL:[NSURL URLWithString: Obj.imageYH] placeholderImage:[UIImage imageNamed:@""]]; 

      return cell; 
}   

Versuchen Sie, diese

+0

Was ist Diff b? W mein Code und Ur-Code? – Krish

+0

und es wurde depricated auch – Krish

+0

ich dies hatte in meinem Code implementieren und es funktioniert für mich – Shreyank

1

Sie verwenden können:

[SDImageCache sharedImageCache] .config.shouldDecompressImages = NO; [[SDWebImageDownloader sharedDownloader] setShouldDecompressImages: NEIN];

In Version 4.0-Beta

Verwandte Themen