¿Qué biblioteca de almacenamiento en caché de imágenes para iOS?

Estoy creando una aplicación de álbum de fotos y encuentro algunas bibliotecas de almacenamiento en caché de imágenes, a saber:

¿Cuál recomendaría (u otras bibliotecas que no están en la lista)? Busco:

  • Eficiencia
  • Mínimo esfuerzo en cuanto a recolección de basura
  • Se prefiere soporte para bloques

Muchas Gracias

preguntado el 08 de noviembre de 11 a las 10:11

ZDS_Shared tiene limitación de ancho de banda pero no solicitudes síncronas (es decir, devuelve nulo para un recurso cuando el almacenamiento en caché está pendiente). Funciona con colas de operaciones, así que supongo que podría agregar una llamada con NSInvocation para eso. -

7 Respuestas

Personalmente pienso SDWebImage es la mejor porque es una solución absoluta sin esfuerzo y proporciona el mecanismo más simple para el manejo de caché, ya que es simplemente una extensión de la clase UIImageView.

Respondido el 05 de Septiembre de 12 a las 20:09

Realmente fue menos de 10 minutos de trabajo compilar SDWebImage, elegir e incluir la biblioteca correcta y agregar la línea para usarla. ¡Brillante! - axello

Pruebe también SmartStorage (github.com/Alterplay/APSmartStorage). Almacena automáticamente en caché UIImage / NSData en el disco o en la memoria. Es muy inteligente. - Slatvick

Estamos en 2014 ahora y esta lib tiene un error estúpido, no muestra imágenes que contengan puntos en el nombre del archivo - Cristi Băluță

Acerca de SDWebImage ... no puede controlar la fecha de vencimiento del caché. - Ricardo

¿Alguna biblioteca de almacenamiento en caché de imágenes que le permita controlar la fecha de vencimiento del caché? @Ricardo - Sayalee Pote

La descarga y el almacenamiento en caché de imágenes asíncronas no es una tarea sencilla. Debe hacerse bien, de lo contrario, frustrará su propósito. Por lo tanto, sugiero encarecidamente que eventualmente construya el suyo propio. Dicho esto, necesitaba una solución rápida y sencilla para seguir adelante con el desarrollo de mi aplicación.

Encontré estas soluciones:

Probé HJCache, pero no ofreció un gran rendimiento de desplazamiento al manejar imágenes grandes (1.5M +). Sin embargo, para imágenes pequeñas funcionó muy bien. También probé tanto LazyTableImages, pero la integración no fue simple.

Finalmente, elegí SDWebImage. La integración no puede ser más sencilla. Una vez que haya vinculado la biblioteca a su proyecto, todo lo que necesita hacer es:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

en tu tableView:cellForRowAtIndexPath:.

Adicionalmente:

  • También funciona con celdas personalizadas
  • No bloquea la interfaz de usuario
  • Ofrece un gran rendimiento de desplazamiento
  • La descarga y el almacenamiento en caché de imágenes son sencillos.

Respondido el 25 de diciembre de 11 a las 00:12

Existen múltiples marcos que resuelven este problema. Sólo para nombrar unos pocos:

Swift:

C objetivo:

Respondido el 22 de Septiembre de 16 a las 13:09

Pruebe también APSmartStorage. Almacena automáticamente en caché UIImage / NSData en el disco o en la memoria.

Tiene una linda API estilo Blocks;

    // setup data parsing block
APSmartStorage.sharedInstance.parsingBlock = ^(NSData *data, NSURL *url)
{
    return [UIImage imageWithData:data scale:UIScreen.mainScreen.scale];
};
...
// show some progress/activity
...
// load object with URL
[APSmartStorage.sharedInstance loadObjectWithURL:imageURL callback:(id object, NSError *error)
{
    // hide progress/activity
    if (error)
    {
        // show error
    }
    else 
    {
        // do something with object
    }
}];

Es bastante inteligente y aún simple:

enter image description here

Respondido 10 Feb 14, 17:02

Intenté usar SDWebImage.

Estuvo de acuerdo en que es muy fácil de integrar.

Sin embargo, el gran problema con esta biblioteca es que no respeta el control de caché de "edad máxima".

La biblioteca aún está en desarrollo, pero no están eligiendo esta limitación.

Respondido el 02 de diciembre de 13 a las 10:12

Te recomiendo encarecidamente que pruebes Martín pescador y SDWebImage. Ambos funcionan perfectamente para descargar y almacenar imágenes en caché de la web.

Respondido 20 Jul 17, 22:07

Moa

Moa es una biblioteca de descarga de imágenes escrita en Swift. Permite descargar y mostrar una imagen en una vista de imagen configurando su propiedad moa.url.

Instalación Utilice CocoaPods para agregar Moa a su proyecto. Simplemente agregue la siguiente línea a su Podfile.

vaina 'moa', '~> 8.0'

Respondido el 05 de diciembre de 18 a las 09:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.