~기술공유에 업로드한 내용과 동일한 내용임~
[2022.12.19] 세부 내용 리팩토링^^;
차트 데이터를 업데이트 해야하는 상황이 생겼었는데 내가 구현한 차트 뷰는 이니셜라이징할 때만 차트 데이터를 받아서 보여주고 거기서 끝나기 때문에 문제가 발생해서 알게 되었다.
뷰를 다시 그리려면 어떻게 해야하는지에 대한 스택오버플로우 질문에 대한 답을 보면 항상 setNeedsDisplay
가 있어서 일단 그걸 사용해서 문제를 해결했었음
하지만!! 그래서 이걸 왜 써야하는데?? 다른 비슷한 이름인 메서드들도 있던데 걔네는 뭐임?? 하는 의문의 답을 찾기 위해 찾다가 UIView 드로잉 주기에 대해 공부하게 되었다.
위의 문서를 기반으로 정리해 본 것
UIView는 컨텐츠를 표시할 때 on-demand 드로잉 모델을 사용함.
여기서 on-demand란 요청이 있을 때 공급이 있다는 느낌으로 시스템의 요청이 있어야 업데이트를 한다는 의미로 해석할 수 있을 듯하다.
다만 바로 공급(업데이트)하지는 않고, 요청들을 모았다가 적절한 주기(update cycle)에 한꺼번에 변경한다.
이것은 iOS 앱의 Main Run Loop와 관련이 있다고 함
⇒ Run Loop: 입력 소스를 처리하는 이벤트 처리 루프