alidación @PNG en iOS

Escribiendo una aplicación de mapeo en iOS, haciendo uso de los mosaicos de OpenStreetMap. Las imágenes de mosaico del mapa se descargan de forma asíncrona y se almacenan en un diccionario, o se conservan en una base de datos SQLite.

e vez en cuando, por cualquier razón, al intentar representar una imagen de mosaico de mapa, aparece el siguiente error:
ImageIO: <ERROR> PNGinvalid distance too far back

Esto hace que aparezcan cuadrados negros desagradables sobre mi mapa.

Este es el fragmento de código en el que ocurre esto:

NSData *imageData = [TileDownloader RetrieveDataAtTileX:(int)tilex Y:(int)tiley Zoom:(int)zoomLevel];  
if (imageData != nil) {
    NSLog(@"Obtained image data\n");
    UIImage *img = [[UIImage imageWithData:imageData] retain];
    // Perform the image render on the current UI context.  
    // ERROR OCCURS BETWEEN PUSH AND POP
    UIGraphicsPushContext(context);
    [img drawInRect:[self rectForMapRect:mapRect] blendMode:kCGBlendModeNormal alpha:1.0f];
    UIGraphicsPopContext();
    [img release];
}

Ahora, lo que estoy buscando es una forma de asegurar que un png sea válido antes de intentar representarlo en mi mapa.

Editar El sistema también ocasionalmente arroja este error:
ImageIO: <ERROR> PNGIDAT: CRC error

Respuestas a la pregunta(4)

Su respuesta a la pregunta