ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 를 체크 할수 있음

     

     

    반응형

    댓글

Designed by Tistory.