clamp
Clamp
clamp
글쓰기 관리
전체 방문자
오늘
어제
  • 분류 전체보기 (509)
    • IOS (85)
    • SwiftUI+TCA+Combine (9)
    • RxSwift + MVVM (56)
    • Clean Architecture (12)
    • SWIFT (56)
    • iOS - TDD (2)
    • 디자인패턴 (4)
    • CS (56)
      • 알고리즘 (29)
      • 운영체제 (15)
      • 자료구조 (2)
      • 네트워킹 (4)
      • 기타 (6)
    • 회고 (0)
    • Firebase (18)
    • SwiftUI (10)
    • iOS - UIKit (11)
    • iOS - 오픈소스 (6)
    • 코딩테스트 (166)
      • 프로그래머스 (164)
    • 정보처리기사 (14)
    • GitHub (2)
글쓰기 / 관리자

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Swift
  • Q
  • ㅅ
  • uikit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
clamp

Clamp

[Swift] 디버깅(테스트/검증)함수 assert, precondition
SWIFT

[Swift] 디버깅(테스트/검증)함수 assert, precondition

2023. 3. 20. 11:57

디버깅(테스트/검증)함수

  • 앱을 테스트 하면서, 런타임동안 발생할 수 있는 여러 버그의 가능성, 잘못된 코드의 검증등을 수행하도록 도와주는 함수
  • print(), dump() 일종의 디버깅 함수이다. 어떤 코드들이 입력되는지 콘솔창을 통해 확인/검증 할 수 있으므로.

 

디버깅 함수

  • assert()
  • assertionFailure()
  • precondition()
  • preconditionFaulure()
  • fatalError()

assert()  ➡️ 실제 앱을 출시시, 일부러 앱을 종료시켜야하는 상황은 아니지만, 디버그 모드에서 검증

예)  레이블에 20 % / 30% /... 100% 표시한다고 했을때, -10%라고 표시된다고 굳이 앱을 종료시켜야 하는가?

 

precondition() ➡️ 실제 앱을 출시시에도 앱을 의도적으로 종료시켜야 하는 상황

예) 앱의 업데이트로 인해, 버전이 업데이트 되었는데, 이전 버전을 사용중이라면 서버와의 통신이 잘못될 수 있기 때문에 종료시켜야함.

 

assert()

public func assert(_ condition: @autoclosure () -> Bool
                   , _ message: @autoclosure () -> String = String()
                   , file: StaticString = #file
                   , line: UInt = #line)
  • 앱을 출시하기 이전인 디버깅 모드에서만 동작한다. 배포하는 애플리케이션에서는 동작하지 않으며 그러므로 코드를 주석처리나, 삭제할 필요가 없다.
  • 개발중에 실수나 잘못된 가정을 찾는데 도움이 된다.
condition: 에러의 발생 조건
message: 에러 발생 시 커멘드라인에 띄울 메시지

 

assertionFailure()

@inlinable public func assertionFailure(_ message: @autoclosure () -> String = String(),
                                        file: StaticString = #file,
                                        line: UInt = #line)
  • assert()와 같다.
  • assert()와 다르게 조건을 입력할 수 없으므로 분기처리 후 사용해야한다.
message: 에러 발생 시 커멘드라인에 띄울 메시지

precondition()

public func precondition(_ condition: @autoclosure () -> Bool
                         , _ message: @autoclosure () -> String = String()
                         , file: StaticString = #file
                         , line: UInt = #line)

 

  • 디버깅 모드와 배포되는 애플리케이션 모두에서 동작한다.
  • production에서 이슈를 발견하는데 도움이된다.

 

preconditionFailure()

public func preconditionFailure(_ message: @autoclosure () -> String = String()
                                , file: StaticString = #file
                                , line: UInt = #line) -> Never

 

 

저작자표시 비영리 동일조건 (새창열림)
    'SWIFT' 카테고리의 다른 글
    • [Swift] #selector(셀렉터)
    • [Swift] #keyPath
    • [Swift] Never타입과 fatalError()
    • [Swift] CaseIterable 프로토콜
    clamp
    clamp
    주니어 iOS개발자의 발악!!!!!!!

    티스토리툴바