2010-06-11 4 views
1
UIGraphicsBeginImageContext(targetSize); //instruments show here a leak 128bytes 

CGRect thumbnailRect = CGRectZero; 

thumbnailRect.origin = thumbnailPoint; 
thumbnailRect.size.width = scaledWidth; 
thumbnailRect.size.height = scaledHeight; 

[sourceImage drawInRect:thumbnailRect]; 

newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Salut, je suis en train d'escalader une UIImage si je charge avecOù est la fuite?

[UIImage imageNamed:@"myImage.png"]; 

puis le passer à une méthode. Dans cette méthode, j'ai le code ci-dessus qui redimensionne mon image et à la fin de la méthode que je une

return newImage; 

Les instruments me montrer une fuite à la ligne

UIGraphicsBeginImageContext(targetSize); //instruments show here a leak 128bytes 

Qu'est-ce que je fais mal? Où est exactement la fuite?

Répondre

0

Vous ne semblez pas faire quelque chose de mal; cela pourrait être un bug dans la méthode UIGraphicsBeginImageContext. 128 octets est un peu trivial, cependant - à moins que vous ne fassiez cette création de vignettes un grand nombre de fois, vous n'avez probablement pas besoin de vous en préoccuper.

+0

Je ne le fais qu'une fois mais ça me fait chier de ne pas savoir ce qui ne va pas. Merci pour votre réponse –

-2

Selon l'argument the docs, l'argument de UIGraphicsBeginImageContext doit être la taille réelle de l'objet renvoyé par UIGraphicsGetImageFromCurrentImageContext(). Pourquoi appelez-vous avant que vous avez reçu un tel objet?

+0

Je pense que vous ne comprenez pas le but de ces méthodes. 'UIGraphicsBeginImageContext' crée un contexte graphique avec les dimensions (dans une structure' CGSize') que vous lui donnez. 'UIGraphicsGetImageFromCurrentContext' renvoie une image avec les dimensions et le contenu du contexte graphique actuel. –

+0

Probablement. Je ne suis pas familier avec la programmation Mac et probablement mal compris l'exemple. Oh bien. Je suppose que c'est l'un des risques liés à l'utilisation de bibliothèques fournies; vous ne contrôlez pas vos propres bugs. – ShadowRanger

1

Les instruments vous indiqueront où la mémoire a été allouée pour la première fois; ceci est apparemment dans UIGraphicsBeginImageContext(). Je pense que double-cliquer sur la fuite (ou plus) listera toutes les retenues/autoreleases/releases; regarde dans l'un de ceux-là.