В настоящее время я работаю над проектом 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);
освобождены.я здесь не так делаю или чего не хватает?