Carregar UIImage no thread de segundo plano causa erro no ImageIO

Estou trabalhando em um projeto iOS que carrega UIImages de URLs em um encadeamento em segundo plano e os exibe em uma exibição de rolagem paginada horizontalmente. Esse comportamento deve imitar o do aplicativo de biblioteca de fotos nativa do iPhone. Tenho tudo configurado de uma maneira que acredito que funcione, mas, ao desenhar o UIImages no contexto principal de gráficos da interface do usuário, ocasionalmente vejo essa mensagem impressa no console:

ImageIO: <ERROR>  CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedImageBlockData: bad readSession [0x685e590]

Apesar desse erro, parece que o aplicativo funciona perfeitamente bem e que as imagens são desenhadas conforme o esperado. Devo simplesmente ignorar esse "ERRO" ou devo alterar meu método para carregar imagens no segmento de plano de fundo? Atualmente, carrego a imagem em um thread de segundo plano usando o UIImageinitWithData: método:

- (void)backgroundLoadThread:(NSURL *)url {
    @autoreleasepool {
        NSData * imageData = [NSData dataWithContentsOfURL:url];
        UIImage * theImage = [[UIImage alloc] initWithData:imageData];
        if ([[NSThread currentThread] isCancelled]) {
#if !__has_feature(objc_arc)
            [theImage release];
#endif
            return;
        }
        [self performSelectorOnMainThread:@selector(loadComplete:)
                               withObject:theImage waitUntilDone:NO];
    }
}

MinhasloadComplete: método @ simplesmente retém a imagem passada como uma variável de instância, que é posteriormente desenhada nodrawRect: método. DentrodrawRect:, Estou usando o UIImagedrawInRect:, que parece ser o autor da mensagem de erro no console. No entanto, desenhando o CGImageRef subjacente da imagem usandoCGContextDrawImage ainda causa o mesmo erro. O código fonte completo pode ser encontrado no repositório Github deste projeto, no arquivo ANAsyncImageView.m.

EDIT: Agora alterei o thread de segundo plano para carregar uma CGImage do arquivo e, em seguida, retornar a chamada para o thread principal, passando o CGImageRef usando uma ponte de ligação gratuita. Infelizmente, isso ainda cria o mesmo problema, provando para mim queimageWithCGImage: deve, de alguma forma, manter uma referência à CGImage original. Confira o código no arquivo vinculado acima (para o repositório do Github) para obter o código completo:

NSData * imageData = [NSData dataWithContentsOfURL:url];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)imageData);
CGImageRef loaded = CGImageCreateWithPNGDataProvider(provider, NULL, false, kCGRenderingIntentDefault);
CGDataProviderRelease(provider);

id imageObj = (id)loaded;        
[self performSelectorOnMainThread:@selector(loadComplete:) withObject:imageObj waitUntilDone:NO];
CGImageRelease(loaded);

questionAnswers(2)

yourAnswerToTheQuestion