iphone - memoria - Caché de borrado SDWebImage
como limpiar mi iphone de archivos basura (3)
Estoy mostrando una lista de iconos descargados de la web con texto en una vista de tabla. Los íconos se pueden cambiar en el lado del servidor y necesito reemplazarlos tan pronto como estén disponibles nuevos íconos. Intento usar el siguiente código:
[imgView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"table_avatar_icon"] options:SDWebImageCacheMemoryOnly];
Y llame a [[SDImageCache sharedImageCache] clearMemory];
En mi devolución de llamada de actualización, pero no purga el contenido de la memoria caché. Más aún, incluso si cierro la aplicación y la vuelvo a abrir, la imagen aún está allí.
Solo encontré una forma de borrar el caché y es llamando a [[SDImageCache sharedImageCache] clearDisk];
. Lo cual solo funciona después de cerrar y volver a abrir la aplicación.
¿Cómo puedo forzar a SDWebImage a no usar el almacenamiento en caché de disco?
Excepto los métodos de SDImageCache, le recomiendo que verifique las URL de su imagen. En mi situación, probé todos los métodos para imageCache y el problema de la memoria aún continuaba. Los bloqueos se produjeron principalmente en el iPhone 4 debido a que el hardware no podía manejarlo.
¡El problema principal era la codificación urls & ampersand!
Por ejemplo, revisa estas URL: la primera URL está usando "& amp;" y la segunda no. Debido a la funcionalidad, mi biblioteca JSON no puede leer que el valor de ancho y ancho sea mucho mayor de lo que debería ser. Es por eso que tuve un problema de memoria.
1) /select.php?imageid=101961221 "& amp ; " width = 100 "& amp ; " isWatermarked = true
2) /select.phpimageid=101961221&width=100&isWatermarked=true
Además, las últimas versiones de la biblioteca SDWebImage incluyen la clase UIImageView+WebCache.h
y maneja muy bien los problemas de caché.
Ubica la fuente si es un problema. Parece que fui engañado por el patrón de Singleton utilizado en SDImageCache
. La caché para la extensión que se utiliza sobre UIImageView está siendo controlada por SDWebImageManager
que tiene una variable de instancia de SDImageCache
. Si desea borrar la caché para la extensión, debe llamar a los métodos de su imageCache
, como clearDisk y clearMemory.
SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];
No olvides poner estas líneas de código en tu didReceiveMemoryWarning
también.