-
Xcode Instrument 톺아보기개발/Swift 2024. 4. 11. 23:53
Animation Hitches
스크롤할때 애니매이션이나 트랜지션이 끊기는 현상을 힛치라고함
렌더 루프를 통해 계속해서 Frame이 만들어지는데 렌더루프가 늦어져서 다음 Frame이 늦어지면 힛치가 발생
렌더루프는 이벤트 처리, UI렌더링, 프레임이 노출 되는 과정을 포함함
녹화 후 앱을 실행하고 녹화 종료 하면
Hitch duration 133, Acceptable latency 33 여기서 Expensive commit 이라는게 발생함
commit은 버튼을 탭 > 뷰 UI 내부적으로 계산하여 업데이트 > 업데이트된 layer tree를 GPU에게 제출 하는 것을 말함
Expensive commit 이 앱에서 발생함을 확인
아래로 내려 메인스레드 타고 들어가 어디서 발생했는지 볼수 있음
Leak
xcode → Profile → Leak 선택 → 녹화 하면 앱이 돌아가면서 체크 가능함
릭이 발생( 실제 발생하면 녹색 V 이 아닌 빨간색 X 표시 됨) 하면 필터 검색 하여 Persistent (메모리에서 갯수)
를 보고 문제 파악 가능함
SwiftUI
해당 코드를 예시로 사용
public struct NoticeListView<ViewModel>: View where ViewModel: NoticeListViewModelProtocol { @ObservedObject private var viewModel: ViewModel @State private var dataSource: [NoticeListRowType] = [] .... }
View Body - 어떤게 얼마나 얼마나 오래동안 그려졌는지 확인하기 위함
위 List View 의 Duration 체크
View Property - view property 가 어떻게 변경되었는지
State 의 Value 를 체크 할수 있음
'개발 > Swift' 카테고리의 다른 글
iOS 앱 자동화 Fastlane Fastfile 작성 Cheatsheet (0) 2024.04.29 Swift 딥링크 처리- AppDelegate와 SceneDelegate (0) 2024.04.12 Crashlytics & Google Analytics 를 이용한 원인 분석 (0) 2024.04.11 Async let & TaskGroup Concurrency 예시 (0) 2024.04.10 Swift 네트워크 구조 잡기 (0) 2024.04.08