SWIFT 디버깅시 유용한 API
실제로 사용해보고 너무 유용했던 Swift로 디버깅 할 때 도움이 되는 API 공유합니다.
1. 현재까지의 콜스택 정보 프린트하기
Thread.callStackSymbols.forEach{print($0)}
복잡한 앱이나 프그램을 만들다보면 자연스럽게 많은 함수를 만들게 됩니다. 해당 API는 특정 함수가 호출될 때 어디서부터 어떤 순서로 호출되었는지를 알려고 할 때 유용한 함수입니다. 물론 콜스택은 브레이크 포인터를 걸어 놓으면 볼 수 있지만 때때로 여러 번의 호출 중 이상한 곳에서 호출되는지를 체크하고 싶을 때가 있습니다. 해당 상황에서 매번 브레이크를 걸고 디버깅하는 것은 디버깅 시간을 많이 소모하기 때문에 해당 함수를 사용하여 디버깅 로그를 보고 파악하면 디버깅 시간을 많이 줄 일 수 있습니다.
2. SwiftUI에서 화면(뷰) 리프레시가 일어난 이유 찾기
Self._printChanges()
SwiftUI로 프로그래밍을 하다보면 뷰의 리프레시, 즉 화면 리프레시의 이유를 알고 싶을 때가 있습니다. 그럴 때 사용하면 뷰의 갱신이 왜 일어났는지 이유를 알 수 있습니다. 즉 어떤 SwiftUI 내의 변수가 변경되서 뷰의 갱신이 일어나게 되었는지 알 수 있습니다. SwiftUI로 프로그래밍하면서 느낀 점 중의 하나는 복잡한 SwiftUI에서 뷰 리프레시(화면 갱신) 최적화가 중요하다는 점입니다. 이 API는 화면 갱신 최적화에 유용하게 사용할 수 있습니다.
사용법은 View내에 갱신이 일어나는 부분에 아래와 같이 코드를 추가해주면 갱신이 일어나게 한 변경된 변수가 디버그 창에 찍힙니다.
let _ = Self._printChanges()
let _ 는 참고로 SwiftUI에서 변수를 설정하거나 함수를 실행시키기 위해서 View 블록내에서 사용하는 방법입니다.
그럼 도움이 되셨기를 바랍니다.