반응형
LinkedIn 개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish 내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.

Recent Posts
Recent Comments
Total
관리 메뉴

꿈꾸는리버리

assert(_:_:file:line:) 본문

오뚝이 개발자/swift

assert(_:_:file:line:)

rriver2 2022. 7. 10. 18:45
반응형

  assert  

assert는 런타임에 특정 조건을 체크하고, 조건이 성립되지 않으면 시뮬레이터가 멈추고 에러 메세지를 출력한다 !

 

 

 

 언제 사용 ? 

assert 함수는 디버깅 모드에서만 동작하기 때문에 배포하는 앱 성능에는 영향을 끼치지 않는다는 특징이 있다.

이러한 특성을 갖기 때문에 assert문은 디버깅 중 앱 배포 전 검증을 위하여 API 테스트 등, 조건 체크 및 테스트를 해야할 때 유용하게 사용될 수 있다.

+) 디버그와 릴리즈 빌드 모두를 검증하기 위해서는 precondition()을 사용한다.

궁금증 ) -0 builds, Release configuration.. -Ounchecked builds.. 구글링을 통해서 일반 시뮬레이션을 돌릴때는 에러처리가 되고 실 배포가 될 때는 assert가 안 먹힌다는 것을 확인했지만, 앞에 언급한 내용들이 뭘 의미하는 지는 잘 모르겠다..

 

 

  Parameter  

-> 일반적으로 1,2번째 파라매터만 입력함 !

  1. condition ( 필수 )
  2. condition 미충족 시 출력할 메세지 ( option )
  3. 출력할 파일 이름 ( option ) : assert() 메서드가 호출된 곳의 파일명
  4. 출력할 메세지 라인 수 ( 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

 

반응형
Comments