Цель C, iOS - Получено предупреждение о памяти - PullRequest
0 голосов
/ 10 октября 2011

В настоящее время я работаю над проектом iOS, который делает хороший прогресс, но вся память в iOS не работает должным образом.

Камера iphone записывает поток.У меня есть метод захвата, который выполняется через очередь.Изображение верблюда преобразуется в оттенки серого.Это работает хорошо, но через некоторое время выдает некоторое предупреждение о памяти и закрывает приложение, потому что его не хватает памяти.

Я обнаружил источник ошибки здесь

CGColorSpaceRef colorSpaceGray = CGColorSpaceCreateDeviceGray();
CGContextRef newContextGray = CGBitmapContextCreate(baseAddressGray, width, height, 8, width, colorSpaceGray, kCGImageAlphaNone);

CGImageRef GrayImage = CGBitmapContextCreateImage(newContextGray);


UIImage *img= [UIImage imageWithCGImage:GrayImage scale:1.0 orientation:UIImageOrientationRight];
[self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:img waitUntilDone:NO];



free(baseAddressGray);
CGColorSpaceRelease(colorSpaceGray);
CGContextRelease(newContextGray);


CVPixelBufferUnlockBaseAddress(imageBuffer,0);

Все лежит внутри автоматического выпускабассейн, который сливается потом.Строка, которая является источником сбоя,

CGContextRef newContextGray = CGBitmapContextCreate(baseAddressGray, width, height, 8, width, colorSpaceGray, kCGImageAlphaNone);

Насколько я понимаю, здесь не должно быть проблем с памятью, потому что

CGColorSpaceRelease(colorSpaceGray);
CGContextRelease(newContextGray);

освобождены.я здесь не так делаю или чего не хватает?

1 Ответ

1 голос
/ 10 октября 2011

Вы не публикуете GrayImage в строке 4 примера кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...