Я наблюдаю взрыв памяти 25MB на [self setImageData:[AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]];
Предупреждения о памяти при использовании AVCaptureStillImageOutput
Ниже фрагмент кода захват изображения и обеспечение формата JPG данных. Когда мы делаем больше снимков, система сообщает о низком предупреждении памяти.
В профилировщике мы не видим утечек, но иногда приложение сообщает о низком уровне памяти даже при 20 МБ и сбоях приложений.
[[self stillImageOutput] captureStillImageAsynchronouslyFromConnection:videoConnection
completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error)
{
[[self captureSession] stopRunning];
if (imageSampleBuffer != NULL)
{
CFDictionaryRef exifAttachments = CMGetAttachment(imageSampleBuffer, kCGImagePropertyExifDictionary, NULL);
if (exifAttachments)
{
NSLog(@"attachements: %@", exifAttachments);
}
[self setImageData:[AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]];
}
imageSampleBuffer = nil;
// call the designated delegate
[self.aCDMCameraCaptureNotificationDelegate imageDidSuccessfullyCaptured];
}];
вы не сможете уменьшить объем памяти, который использует эта часть кода, если вы не уменьшите разрешение захваченного изображения. Вы должны сделать свое приложение готовым для обработки предупреждений о низкой памяти без сбоев. –
После профилирования я вижу следующие утечки памяти. –