디버깅(테스트/검증)함수
- 앱을 테스트 하면서, 런타임동안 발생할 수 있는 여러 버그의 가능성, 잘못된 코드의 검증등을 수행하도록 도와주는 함수
- 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