2010-09-03 5 views
1

L'application sur laquelle je travaille nécessite que je dessine des images dans un UIView. Ces images sont grandes (certains sont 1024x768), et je voudrais être sûr que mon code de dessin n'est pas sous-optimal. Ma méthode drawRect dans mon UIView ressemble à ceci:Est-ce la meilleure façon de dessiner de grandes images sur un UIView?

- (void)drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextClearRect(context, rect); 

    CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, 550); 
    CGContextConcatCTM(context, flipVertical); 
    CGImageRef shadowImage = [[UIImage imageNamed:@"someimage.png"] CGImage]; 
    CGContextDrawImage(context, CGRectMake(162, -174, 700, 700), shadowImage); 
    CGContextConcatCTM(context, flipVertical); 
} 

Il y a d'autres dessin fait ici aussi, mais je veux juste être sûr que le code de dessin l'image ne va pas causer des problèmes, et je n'ai pas négligé d'appeler une méthode importante ou mis en œuvre de manière incorrecte.

Répondre

3

J'ai trouvé que cette méthode est sous-optimale en raison de l'utilisation de

[UIImage imageNamed:@"someimage.png"] 

Cette méthode charge l'image dans la mémoire, il met ensuite en cache pour une utilisation ultérieure. Étant donné que les images avec lesquelles je travaille sont volumineuses et qu'elles sont nombreuses, l'utilisation de cette méthode peut entraîner une utilisation excessive de la mémoire. J'ai écrit un short post avec plus de détails.

+0

Le lien ne fonctionne pas –

+0

@PooLaS Fixe - bravo! – Codebeef

+1

Donc la conclusion est d'utiliser le '[UIImage imageWithContentsOfFile: path];' au lieu de la '[UIImage imageNamed: @" someimage.png "];' ligne :) –