WWDC 2023 발표에서 ViewIsAppearing이 새로 만들어졌음을 알렸다.
기존 생명주기에 새로운 콜백이라니! 뭐가 다르기에, 혹은 뭐가 부족했기에 만들어졌을까? 라는 생각이 먼저 들었다.
관련해서 조금 알아보자!
공식 문서에 따르면 뷰컨트롤러에 새로운 viewController의 뷰가 뷰 계층에 더해진다고 알림을 주는 메서드라고 한다.
즉, viewWillAppear 이후에 한번씩 호출이 되는 메서드로 보여진다.
이전에 활용하던 ViewWillAppear와의 차이점은 뷰가 더해진 이후 항상 호출이 된다는 점이겠다!
명칭이 다르기에 시점이 완전히 다른 것으로 보이겠다!
하지만 엄밀히 말하면 ViewWillAppear과 동일한 시점을 공유한다.
viewWillAppear에 실행하거나 ViewIsAppearing에 실행해도 결국 똑같은 시점에 업데이트 된다는 점~
하지만 여기에서 가장 큰 차별점이 존재한다.
그동안 새로운 view가 나타날 것이다고 알렸던 viewWillAppear은 단순 알림 역할만 했을 뿐, 새로운 view의 규격(size, safeArea 등)등, 값이나 생성 자체는 하지 않았다. 따라서 viewWillAppear 메서드를 통해 올려진다는 점을 확인, viewDidLoad로 실제 생성된 view를 육안으로 확인해야 했었는데, 이때 오류가 많이 발생했다고 한다 (규격 자체 문제 + 생성 시점에 발생하는 crash error 문제)
반면, viewIsAppearing은 새롭게 업데이트 되는 view의 trait과 layout geometry 정보를 받은 이후이다. 새롭게 올려질 view이 실제로 생성이 되었을 뿐, 화면에만 안 보이는 시점과 마찬가지다! 즉, view를 새롭게 업데이트 해야한다면 viewIsAppearing을 활용하는 방식이 더 좋아보인다.