SwiftUI 뷰 라이프사이클 관련 속성
2022년 9월 23일 수정
≡ 목차 (Table of Contents)
onAppear
이름처럼 뷰가 처음 등장했을 때 실행될 루틴을 구현할 수 있다.
struct SomeView: View { var body: some View { VStack { ... } .onAppear { someProperty = anotherProperty ?? "Default Value" } } }
여러 곳에서 사용할 수 있긴 하지만 제약이 있는 편이다. 앱 컨트롤러 컴포넌트 혹은 레이아웃 컴포넌트 정도에서만 쓸 수 있는 것 같다.
SwiftUI에는 viewDidLoad
같은 것을 사용할 수 없으므로 onAppear
와 함께 최초 여부를 파악하기 위한 특정 스테이트를 추가하는 방법을 이용해 비슷한 용도로 사용할 수 있다. 즉 onAppear
는 일단 뷰가 로드된 다음에 호출된다고 생각하면 된다.
task
위의 onAppear
의 경우는 동기 코드만 사용이 가능하다는 단점이 있다. 이 경우 Task
등을 이용해 비동기로 구동시키는 방법(Swift async/await 참고)이 없는 것은 아니지만, onAppear
대신 이 항목의 주제인 task
를 이용하는 방법이 더 간단하다.
struct SomeView: View { var body: some View { VStack { ... } .task { await someAsyncFuncs() } } }
당연하게도 비동기 코드들이 들어가게 되므로 뷰가 이 함수가 실행되기 전에 먼저 렌더링 될 수 있음을 기억하자.