인디노트

Crash Code : iOS 에서 카메라 관련 크래쉬 코드 본문

소스 팁/Objective C, Swift, iOS, macOS

Crash Code : iOS 에서 카메라 관련 크래쉬 코드

인디개발자 2016. 4. 29. 07:59

iOS 기기에서 카메라 기능을 구현할 때 주의를 해야겠다.

애플의 Crash Reports 를 기준으로 많이 나는 오류를 추적해 보니...


예를 들어 


[device setTorchMode:AVCaptureTorchModeOff];


이렇게 카메라 장치의 Torch Mode 를 설정할 때 해당 device 가 과연 Torch Mode 를 지원하는지 확인해야만 한다.

그렇지 않으면 해당 device 에 Torch Mode 를 셋팅하는 순간 코드는 죽는다.


다음과 같은 함수들도 마찬가지 이다.


[device setFocusMode:focusMode];

[device setFocusPointOfInterest:point];


그래서... 코드를 다음과 같이 짜야만 한다.


if ([device isFocusPointOfInterestSupported] && [device isFocusModeSupported:focusMode])

{

[device setFocusMode:focusMode];

[device setFocusPointOfInterest:point];

}



아래와 같은 코드는 

[device setTorchMode:AVCaptureTorchModeOn];

[device setFlashMode:AVCaptureFlashModeOn];



요런식으로... 짜야한다.

if([device isTorchModeSupported:AVCaptureTorchModeOn])

{

[device setTorchMode:AVCaptureTorchModeOn];

}

if([device isFlashModeSupported:AVCaptureFlashModeOn])

{

[device setFlashMode:AVCaptureFlashModeOn];

}



아~~~ 이게 뭔... 이건 너무하지 않은가. 애초에 device 가 자신이 지원하지 않으면 그냥 false 를 내 뱉게 device API 를 설계해야하지 않는가? 그렇다고 그냥 죽는다는건 애초에 device API 가 그런것을 전혀 염두에 두지않고 짰다는 것인데. 역시 device 는 다루기 힘들어 ㅠㅠ


내가 초보인가?



반응형
Comments