2012-01-06 11 views
7

Używam biblioteki pobierania/buforowania obrazu SDWebImage praktycznie za każdym razem, gdy wyświetlam obraz w widoku tabeli.Jak używać SDWebImage bez pamięci podręcznej dla jednej instancji

Zwykle zaimplementowałem to tak (w metodzie tabeli metoda cellForRowAtIndexPath).

[cell.imageView setImageWithURL: 
[NSURL URLWithString:@"http://asite.com/animage.jpg"] 
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];   

I to by załadowało wersję z pamięci podręcznej, gdyby miała.

Co zrobić, jeśli chcę korzystać z prostoty SDWebImage (z symbolem zastępczym/niezawodnym pobieraniem) - ale bez pamięci podręcznej w jednym miejscu.

W jaki sposób wyłączyć buforowanie w całym SDWebImage, ale nie wiem, jak nazwać setImageWithUrl: placeholderImage: upewniając się, że SDWebImage nie korzysta z pamięci podręcznej?

Powodem, dla którego chcę to zrobić, jest użycie go do wyświetlania kamer w widoku tabeli (oczywiście, że chcesz aktualizować za każdym razem).

Odpowiedz

6

Polecam odejście od kategorii na UIImageView i tworzenie własnej wersji SDWebImageManager. Uzyskasz większą kontrolę, jeśli sam użyjesz klasy SDImageCache.

Herezje i przykład prawo od SDWebImageManager samego:

[[SDImageCache sharedImageCache] storeImage:image 
            imageData:downloader.imageData 
            forKey:[downloader.url absoluteString] 
            toDisk:NO]; 

toDisk jest chyba gdzie zmieniłem BOOL NO, domyślny menedżer wykorzystuje buforowanie dysku. Można też wyczyścić pamięć tak często, aby wspierać swoje obrazy Streaming:

[[SDImageCache sharedImageCache] clearMemory]; 

Kod SDWebImageManager jest łatwy do naśladowania i wyobrażam sobie, że nie będzie musiał na nowo większość z nich, kilka ważnych fragmentów w zależności od potrzeb.

3

Proszę bardzo. Sprawdź, czy masz najnowszą wersję SDWebImage:

[anImageView setImageWithURL:[NSURL URLWithString:@"http://asite.com/animage.jpg"] 
      placeholderImage:[UIImage imageNamed:@"placeholder.png"] 
        options:SDWebImageCacheMemoryOnly]; 

Od SDWebImageManager.h:

/** 
* This flag disables on-disk caching 
*/ 
SDWebImageCacheMemoryOnly = 1 << 2, 
0

Wystarczy użyć właściwości shouldCacheImagesInMemory z SDImageCache i ustawić go na NIE. Ta funkcja dostępna w wersji 3.7.4.

0

Możesz użyć SDWebImageDownloader. Nie buforuje danych.

Powiązane problemy