Я столкнулся с утечкой памяти. Согласно Профилировщику (с выделениями), это происходит в функции createCGImage CIContext. Я искал и находил подобные проблемы здесь на stackoverflow, но я еще не нашел решения. Я попытался обернуть его в автозапуск, но у меня все еще есть утечка памяти.
Как создать CGImage из CIContext без утечки памяти в swift4?
func session(_ session: ARSession, didUpdate frame: ARFrame) {
// Only run when currentFrame is finished
guard self.currentPixelBuffer == nil else { return } // , case .normal = frame.camera.trackingState
self.currentPixelBuffer = frame.capturedImage
guard let currentPixelBuffer = self.currentPixelBuffer else {return }
let ciImage = CIImage(cvPixelBuffer: currentPixelBuffer).oriented(CGImagePropertyOrientation.init(UIDevice.current.orientation))
let cgImage: CGImage? = self.context?.createCGImage(ciImage, from: ciImage.extent)
// var cgImage: CGImage?
// autoreleasepool { [weak self] () -> () in
// cgImage = self?.context?.createCGImage(ciImage, from: ciImage.extent)
// }
guard let unwrappedCgImage = cgImage else { return }
let uiImage = UIImage.init(cgImage: unwrappedCgImage)
let visionImage = VisionImage(image: uiImage)
self.backgroundQueue.async {
self.textDetector?.detect(in: visionImage, completion: { [weak self] (features, error) in
...
P.s. вот мое контекстное объявление:
var context: CIContext? = CIContext.init(options: nil)