deinit not called
ranhsd opened this issue · comments
Hi, I noticed that deinit is not being triggered for CameraManager. In my view controller I use it like this:
lazy var cameraManager: CameraManager = {
let cameraManager = CameraManager()
cameraManager.shouldEnableTapToFocus = true
cameraManager.shouldEnablePinchToZoom = true
cameraManager.shouldRespondToOrientationChanges = true
cameraManager.shouldKeepViewAtOrientationChanges = true
cameraManager.cameraOutputMode = .stillImage
cameraManager.cameraOutputQuality = .high
cameraManager.writeFilesToPhoneLibrary = false
cameraManager.animateShutter = false
return cameraManager
}()
override public func viewDidLoad() {
super.viewDidLoad()
cancelButton.isHidden = true
self.cameraManager.addLayerPreviewToView(self.previewLayer, newCameraOutputMode: .stillImage) {[unowned self] in
DispatchQueue.main.async {
self.cancelButton.isHidden = false
self.previewLayer.bringSubview(toFront: self.captureButton)
}
}
}
When I close my view controller my deinit method is being triggered but camera manager deinit not. In order to deinit the camera manager as well you need to put the following in your deinit method (or in viewWillDisapper)
deinit {
cameraManager.stopCaptureSession()
}
If this make sense please let me know and I will create a pull request and update the example project
Please feel free to PR. Thanks!
For anyone up to the task, the CMMotionManager handler should be using a weak reference to self
:
CameraManager/camera/CameraManager.swift
Line 1444 in 05a66bc