Configurando a propriedade da imagem do UIImageView causa atraso maior
Deixe-me contar sobre o problema que estou tendo e como tentei resolvê-lo. Eu tenho um UIScrollView que carrega subvisualizações como um rola da esquerda para a direita. Cada subvisualização tem 10-20 imagens em torno de 400x200 cada. Quando eu rolar a tela para ver, sinto um pouco de atraso.
Depois de investigar, descobri que depois de descarregar todas as visualizações e tentar novamente, a defasagem desapareceu. Eu percebi que o cache síncrono das imagens era a causa do atraso. Então criei uma subclasse do UIImageView que carregava as imagens de forma assíncrona. O código de carregamento se parece com o seguinte (self.dispatchQueue
retorna uma fila de envio serial).
- (void)loadImageNamed:(NSString *)name {
dispatch_async(self.dispatchQueue, ^{
UIImage *image = [UIImage imageNamed:name];
dispatch_sync(dispatch_get_main_queue(), ^{
self.image = image;
});
});
}
No entanto, depois de alterar todos os meus UIImageViews para esta subclasse, eu ainda experimentei lag (não tenho certeza se foi diminuído ou não). Eu reduzi a causa do problemaself.image = image;
. Por que isso está causando muito atraso (mas apenas na primeira carga)?
Por favor me ajude. = (