→ 뷰 계층 구조를 느리게 업데이트하는 문제를 주로 다룰 예정
→ isPlayTime
, dog
가 뷰의 종속성이며, 이 뷰를 표시하는 다른 방법은 그래프임
→ Environment에서 생성한 값과 부모가 생성한 값에 의존
→ 뷰에 대한 새로운 값을 생성하는 것을 시작으로 업데이트 프로세스 시작
→ dog
와 같은 저장 프로퍼티(View Value), isPlayTime
와 같은 동적 프로퍼티(Dynamic Property)
→ 이후 body가 실행(Update View Value)되어 하위 뷰를 생성
이러한 프로세스는 인터페이스 업데이트를 위해 반복됨
→ 값이 변경 혹은 종속성이 변경이 있는 뷰만 업데이트를 하게 됨
값에 변동이 생기면 새 복사본을 생성하여 하위 항목을 업데이트
해당 메서드를 통해 런타임에서 뷰의 body가 호출된 이유를 print할 수 있음
추가 종속성이 있는지 확인하고 싶으면 Self._printChanges()
를 코드에 넣어봐라! 단 이는 성능에 영향을 주기 때문에 디버깅하고 꼭 삭제하기!
→ 값타입이기 때문에 가능, 값을 복사해놓고 새 값과 비교하는 방식
🚨 @self가 변경되었다는 것은 동적 속성이 변경된 것이 아닌 정적 값이 바뀐 것을 확인할 수 있음
⚒️ 추가 종속성 제거를 위해 수정