Estoy tratando de cargar más de 100 imágenes de la agrupación, sin embargo, recientemente me fue solo por curiosidad, ¿cuál es la mejor práctica para cargar las imágenes de forma dinámica a partir de la agrupación. La voluntad de Imágenes personalizadas.xcassets me permite hacer tal tarea? ¿Cómo puedo cargar dinámicamente NSArray?

OriginalEl autor kforkarim | 2014-05-09

1 Comentario

  1. 7

    Para comenzar con mi respuesta me la herida recomiendo, NO lo hagas.

    Es realmente una exageración para su aplicación a la carga de 100 imágenes y almacenarlas en la memoria, a la vez, y la app sin duda en algunas de presión de memoria.

    En Xcode 5, .xcassets sigue siendo el mejor lugar para guardar sus imágenes en el paquete de la aplicación. Para más detalles usted podría estar interesado en Apple Activos Catálogo documentación. Sin embargo, en lugar de la carga y almacenamiento de imágenes para NSArray, yo recomendaría usted para almacenar sus identificadores (en realidad los nombres de imagen como añadido .xcassets) en la matriz. También sería útil si usted almacén de la imagen identificadores para algunos NSString* const de antemano.

    Por lo que su estructura de codificación debería parecerse a la siguiente:

    //image names
    NSString* const kImage1 = @"image1";
    NSString* const kImage2 = @"image2";
    NSString* const kImage3 = @"image3"; 
    //...etc
    
    NSArray* imageIdentifiers = @[kImage1, kImage2, kImage3,...];
    
    //...

    Y, a continuación, cargar la imagen individual de paquete que se puede utilizar:

    UIImage* img = [UIImage imageNamed:kImage3]; //loads image3 from bundle and caches

    O para recorrer todas las imágenes que puedes usar:

    for (NSString* identifier in imageIdentifiers) {
        @autoreleasepool { //make sure your image data gets disposed after use
            UIImage* img = [UIImage imageNamed:identifier];
            //... use img, etc.
        }
    }

    Y, finalmente, imageNamed: método de UIImage clase, los almacena una imagen en la memoria caché del sistema. Así que usted no tiene que preocuparse acerca de la recarga de un archivo, si reutilización.

    ¿Qué pasa si no sé los nombres de las imágenes de antemano? Es allí una manera de buscar en el directorio y cargar todas las imágenes?
    eso es totalmente una historia diferente. La idea que he descrito aquí es para liado recursos para que usted sepa siempre el identificador de recursos. Usted puede utilizar siempre [[NSFileManager defaultManager] contentsOfDirectoryAtPath:<# your path #> error:NULL]; para obtener el contenido de un directorio en una matriz y la carga de imágenes desde allí con imageWithContentsOfFile: método de UIImage clase, mientras que la enumeración de la matriz. Pero ese proceso no está relacionado con la carga de recursos. Por lo general, se requiere que el método de carga transitoria imágenes.

    OriginalEl autor Ayan Sengupta

Dejar respuesta

Please enter your comment!
Please enter your name here