J'ai une vue personnalisée qui tire un CGImage en utilisant:CGContextDrawImage fuite
- (void) drawImage
{
CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
CGRect imageRect = {{0,0}, {CGImageGetWidth(image), CGImageGetHeight(image)}};
CGContextDrawImage(context, imageRect, image);
}
Il ressemble à la mémoire utilisée par le processus augmente de façon constante lors du redimensionnement de la vue (et donc appelant à plusieurs reprises drawImage). fuites ne montre aucune fuite. vmmap montre en effet une augmentation de la mémoire, mais dans une zone qui est en dehors du contrôle direct de ma demande, c'est-à-dire CG données de trame.
REGION TYPE [ VIRTUAL after open] [VIRTUAL after X resizes]
=========== [ =======]
ATS (font support) [ 31.7M] [ 31.7M]
CG backing stores [ 2448K] [ 5400K]
CG image [ 12K] [ 12K]
CG raster data [ 872K] [ 18.3M] <-- memory increase
Remplacement
CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
avec
CGContextRef context = (CGContextRef)[[NSGraphicsContext graphicsContextWithWindow:[self window]] graphicsPort];
fait la fuite aller loin, mais les résultats dans la fenêtre plus lente redessine et artefacts visuels.
Comment puis-je résoudre ce problème?
Il pics à environ 50Mb puis il descend. Avec une application multi-document 50 Mo par document ajoute. Lors de l'utilisation du contexte graphique de la fenêtre, les données raster ne dépassent jamais 128 Ko. – diciu
Je ne peux pas le recréer sur 10.6.2. Vous devriez ajouter quelques informations sur la version osx à votre message - pourrait aider quelqu'un. –