Carga UIImage en el background Thread

¿Es posible cargar un UIImage en un subprocess de background sin causar problemas de subprocesamiento? Si no, ¿cuál es la mejor forma de hacerlo? Estoy usando iOS 8. Esta es la forma en que lo hago en este momento:

dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0); dispatch_async(backgroundQueue, ^{ UIImage *image = [UIImage imageNamed: fileName]; // only update UI on the main thread dispatch_async(dispatch_get_main_queue(), ^{ [self setImage: image]; }); }); 

Lo que estás haciendo es estructuralmente sólido, pero no sé si imageNamed: es seguro para subprocesss, y no tengo ninguna razón para creer que así sea. Siempre debe asumir que las cosas no son seguras para subprocesss, a less que la documentation indique lo contrario. En este caso, la documentation específicamente dice que no es:

No puede asumir que este método es seguro para subprocesss.

Desde mi punto de vista, debes preguntarte si necesitas hacer esto en absoluto. imageNamed: incluye un mecanismo de almacenamiento en caching que debería liberarte de lo que sea que te preocupa. En cualquier caso, la optimization prematura es un desperdicio de su time y capacidad intelectual. ¿Hay realmente un problema aquí? Usa los instrumentos para averiguarlo; No uses intuición o instinto.

Si el problema es que sus imágenes son demasiado grandes y en una mala elección de formatting, por ejemplo, está utilizando files JPEG muy grandes, sería mejor concentrarse en corregir eso .

EDITAR La documentation de iOS 9 ahora dice: "En iOS 9 y versiones posteriores, este método es seguro para subprocesss". Esto sugiere que mi respuesta fue correcta y que el problema ahora está resuelto.