일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- albumbook
- appres
- MSYS2
- WebAuthn
- 안드로이드
- git
- SSH
- 애플
- kmip
- OSX
- fido
- 2FA
- 인증
- SSL
- MYSQL
- MFA
- css
- 앨범북
- OTP
- Xcode
- SwiftUI
- SWIFT
- apple
- Android
- 앱스토어
- 앱리소스
- otpkey
- Nodejs
- FIDO2
- openssl
- Today
- Total
인디노트
Crash Code : iOS 에서 카메라 관련 크래쉬 코드 본문
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 는 다루기 힘들어 ㅠㅠ
내가 초보인가?
'소스 팁 > Objective C, Swift, iOS, macOS' 카테고리의 다른 글
iOS - UIView 애니메이션 효과 (0) | 2017.07.10 |
---|---|
xcode 의 시스템 변수 값 (0) | 2017.06.06 |
[iOS] NSMutableDictionary 상속, "method only defined for abstract class" (0) | 2017.04.04 |
iOS: Push 수신 시점에서 앱의 3가지 실행 상태 (0) | 2017.01.05 |
OS X 에서 클립보드 모니터링 방법 (0) | 2016.04.29 |