[트러블 슈팅] Main Thread Checker: UI API called on a background thread: -[UIView layer]

징니·2023년 11월 15일

트러블 슈팅

목록 보기
3/3
post-thumbnail

문제 상황

Custom Camera를 구현하는 도중에 다음과 같은 오류 발생

문제 상황의 코드

func setPreviewCamera() {
    self.videoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.captureSession)
    DispatchQueue.main.async {
        self.videoPreviewLayer.frame = self.vScreen.bounds
    }
    self.videoPreviewLayer?.videoGravity = .resizeAspectFill
    self.vScreen.layer.addSublayer(self.videoPreviewLayer)
    DispatchQueue.global(qos: .background).async {
        self.captureSession.startRunning()
    }
}

원인 추론

self.vScreen.layer.addSublayer(self.videoPreviewLayer)
  • 이 라인에서 "UIView.layer must be used from main thread only" 라고 보라색 오류가 남
    - 보라색 오류: 메모리 누수

수정 및 조치

  • main thread에서 코드가 실행되도록 설정

문제 해결

DispatchQueue.main.async {
	self.vScreen.layer.addSublayer(self.videoPreviewLayer)
}
profile
iOS 개발자입니다

0개의 댓글