2
Я пишу CGImageRef с помощью метода Path. Это:Сборщик мусора и основная графика
- (CGImageRef)createImage:(NSString*)path
{
// Create NSURL
NSURL *url = [NSURL fileURLWithPath:path];
CFURLRef cfURL = (CFURLRef)url;
// Create image from source
CGImageRef image = NULL;
CGImageSourceRef imageSource = NULL;
imageSource = CGImageSourceCreateWithURL(cfURL, NULL);
if(imageSource != NULL) {
image = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL); // LEAK
CFRelease(imageSource);
} else {
NSLog(@"Could not load image");
return NULL;
}
// Scale Image
if(image != NULL) {
// Create context
CGRect rect = CGRectMake(0.0f, 0.0f, CGImageGetWidth(image), CGImageGetHeight(image));
CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
CGContextRef context = CGBitmapContextCreate(NULL, rect.size.width,
rect.size.height, 8, 0,
colorSpace,
kCGImageAlphaPremultipliedFirst);
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextDrawImage(context, rect, image); // LEAK
CGContextFlush(context);
CGColorSpaceRelease(colorSpace);
CGImageRelease (image);
// Create scaledImage
scaledImage = CGBitmapContextCreateImage(context); // LEAK
image = scaledImage;
CGContextRelease (context);
}
return image;
}
У меня включен сборщик мусора. Когда я использую Инструмент, я нахожу утечку в CGImageSourceCreateImageAtIndex, CGContextDrawImage и CGBitmapContextCreateImage. Где ошибка, пожалуйста? Как я должен управлять памятью в Core Graphics Когда я включаю сборщик мусора? Спасибо и извините мой английский.
Thank Dave. Я освобождаю CGImageRef. Утечка появляется в методе createImage. – Fernando
Инструмент @Fernando the Leaks показывает, где была создана просочившаяся память, а не там, где она была потеряна. Другими словами, он показывает, что вы * то, что было просочилось, а не * где * было просочилось. –
Если щелчок правой кнопкой (кнопки просмотра), я могу посмотреть трассировку стека. http://cl.ly/ebef2544db1817189bc1 В этой трассе стека я выгляжу что-то неправильно в моем методе createImage: http://cl.ly/60c121f7e38ea92431bb – Fernando