Pregunta

Entonces, este es un anuncio bastante extraño, no estoy seguro de si el problema es con la API de ActivesLibrary, pero no puedo averiguar qué más podría estar sucediendo.

Estoy cargando una matriz con alasets usando el método -enumerateassetsusingblockbock en alasetsegroup. Cuando se completa, estoy cargando un desplazador de imagen personalizado. A medida que el desplazador termina de desplazamiento, utilizo las operadoras de NSInvocation para cargar las imágenes para las vistas actualmente visibles (páginas) desde la biblioteca de fotos en el disco. Una vez que la imagen está cargada y se almacena en caché, notifica al delegado que luego agarra la imagen de la memoria caché y lo muestra en una vista de imagen en el desplazador.

Todo funciona bien, pero el tiempo que se quita cuando -Ensetimage: en realidad se llama al momento en que aparece realmente visiblemente en la pantalla es insoportable, a veces se muestran 10 segundos o más.

Lo he probado con ambos y sin tamaño de imagen que agrega casi nada al tiempo de procesamiento cuando hago el cambio de tamaño. Como dije, la desaceleración está en algún lugar después de que llame a la vista de la imagen. ¿Alguien es consciente de algún tipo de aspecto de la API de AssetLibrary que podría causar esto?

Aquí hay algún código relevante:

- (void)setImagesForVisiblePages;
{
  for (MomentImageView *page in visiblePages)
  {
    int index = [page index];
    ALAsset *asset = [photos objectAtIndex:index];

    UIImage *image = [assetImagesDictionary objectForKey:[self idForAsset:asset]];

    // If the image has already been cached, load it into the
    // image view. Otherwise, request the image be loaded from disk.
    if (image)
    {
      [[page imageView] setImage:image];
    }
    else {
      [self requestLoadImageForAsset:asset];      
      [[page imageView] setImage:nil];
    }
  }  
}

¿Fue útil?

Solución

Esto probablemente arruinará cualquier búsquedas en la web buscando resolver problemas con la Library, por lo que por eso me disculpo.Resulta que el problema no fue la Library en absoluto, sino más bien mi uso de múltiples hilos.Una vez que la imagen termine de cargarse, estuve publicando una notificación utilizando el NSNotificationCenter predeterminado.Lo publicó en el hilo de fondo que luego se actualizaba (o trataba de actualizar, al menos) la UIIMAGEVIEW con -SetImage.Una vez que lo cambié para usar -VerFormSelectoronMainthread y tuvo ese selector, configure la imagen en su lugar, todo estuvo bien.

Parece que no importa lo familiar que obtenga con Multi-Threading, todavía olvido la pequeña Gotchas de vez en cuando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top