- Total
꿈꾸는리버리
assert(_:_:file:line:) 본문
assert
assert는 런타임에 특정 조건을 체크하고, 조건이 성립되지 않으면 시뮬레이터가 멈추고 에러 메세지를 출력한다 !

언제 사용 ?

assert 함수는 디버깅 모드에서만 동작하기 때문에 배포하는 앱 성능에는 영향을 끼치지 않는다는 특징이 있다.
이러한 특성을 갖기 때문에 assert문은 디버깅 중 앱 배포 전 검증을 위하여 API 테스트 등, 조건 체크 및 테스트를 해야할 때 유용하게 사용될 수 있다.
+) 디버그와 릴리즈 빌드 모두를 검증하기 위해서는 precondition()을 사용한다.
궁금증 ) -0 builds, Release configuration.. -Ounchecked builds.. 구글링을 통해서 일반 시뮬레이션을 돌릴때는 에러처리가 되고 실 배포가 될 때는 assert가 안 먹힌다는 것을 확인했지만, 앞에 언급한 내용들이 뭘 의미하는 지는 잘 모르겠다..
Parameter

-> 일반적으로 1,2번째 파라매터만 입력함 !
- condition ( 필수 )
- condition 미충족 시 출력할 메세지 ( option )
- 출력할 파일 이름 ( option ) : assert() 메서드가 호출된 곳의 파일명
- 출력할 메세지 라인 수 ( option ) : 출력할 메세지의 line 수
예시
numberOfPairOfCards는 0보다 작은 수여야만 한다고 condition을 작성했고,
0보다 큰 6이 들어와서 시뮬레이터가 멈추고 에러를 내뱉었다 !

Error Handling 과의 차이점 !
Error Handling는assertions는 복구가능한 에러 또는 예상되는 오류를 위해 사용된다. 하지만 실패한 assert의 경우에는 invalid 프로그램 상태를 나타내므로 error를 catch와는 다른 개념이다. invalid state 에서 실행을 중지하는 것은 잘못된 상태로 인해 발생할 수 있는 damage를 제한하는 데도 도움이 된다 !
Apple Developer Documentation
developer.apple.com
[Swift] assert, precondition, fatalError
Swift Docs > The Basics > Assertions and Preconditions 에 있는 내용을 토대로 한 글입니다! # Assertions 과 preconditions 용도 Assertions 와 preconditions 은 런타임에 체크됩니다. futher code 를 실..
eunjin3786.tistory.com
'오뚝이 개발자 > swift' 카테고리의 다른 글
Copy On Write(COW)는 어떤 방식으로 동작하는지 설명하시오. (2) | 2022.07.14 |
---|---|
Xcode SwiftLint 적용하기 (0) | 2022.07.11 |
struct와 class의 차이를 설명하시오. (0) | 2022.07.06 |
removeLast() vs popLast() (0) | 2022.05.24 |
[2/2] optional chaining (6) | 2022.05.14 |