Использование замыкания приводит к тому, что отладчик завершает работу с давлением памяти и приложение из-за проблем с памятью.Вот простое замыкание, которое я определяю и передаю в качестве аргумента различным функциям.Давление памяти исчезает, если я заменяю замыкание двумя строками кода в замыкании там, где это необходимо.Будут ли эти замыкания, переданные функции, сохранять outputPixelBuffer
или sampleBuffer
, передаваемые в аргументах, неограниченное время?
let videoProcessor: (CMSampleBuffer, CVPixelBuffer) throws -> Void = { (sampleBuffer, outputPixelBuffer) in
if let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer), CFGetTypeID(imageBuffer) == CVPixelBufferGetTypeID() {
do {
try delegate.processPixelBuffer(self, inputPixelBuffer: imageBuffer, toPixelBuffer: outputPixelBuffer)
} catch {
fatalError("Failed processing pixel buffer")
}
}
}