์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :)
๊ทธ๋์ ๋ธ๋ก๊ทธ ๊ธ์ ๋ชป์ผ๋๋ฐ,,, ์ต๊ทผ์ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ํ๋ ์งํํ์ต๋๋ค..ใ
SwiftUI ํ๋ ์์ํฌ๋ก ๊ฐ์ธ ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์งํํ๋ฉฐ ํ์ตํ ๋ด์ฉ๋ ๋ง์์ ์๋กญ๊ฒ ํ์ตํ๊ฑฐ๋ ์ ๋ฆฌํด๋ ๋ด์ฉ์
๋ธ๋ก๊ทธ์๋ ๊ณต์ ํด๋ณผ๊ฒ์~! (์ด์ ๋ณด๋ UIKit ๊ธ์ ๊ฑฐ์ ์์ผ๋ค์...?ใ .......)
SwiftUI View Life Cycle
Lifecycle์ SwiftUI ๋ทฐ์ ์์ฑ๋ถํฐ ์๋ฉธ๊น์ง ์๊ธฐ๋ ์ผ๋ จ์ ์ด๋ฒคํธ ์ ๋๋ค.
SwiftUI์ ๊ฐ ๋ทฐ์๋ ์ฐ๋ฆฌ๊ฐ ๊ด์ฐฐํ๊ณ ์กฐ์ํ ์ ์๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋จ๊ณ๊ฐ ์์ต๋๋ค.
์ด ์ธ ๊ฐ์ง ๋จ๊ณ๋ Appearing, Updating, Disappearing ์ ๋๋ค.
Appearing
Appearing์ ๋ทฐ ๊ทธ๋ํ์ ๋ทฐ๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด ๋จ๊ณ์์ ๋ทฐ๋ ์ด๊ธฐํ๋๊ณ , state๋ฅผ ๊ตฌ๋ ํ๋ฉฐ ์ฒ์์ผ๋ก ๋ ๋๋ง๋ฉ๋๋ค.
- ์ด๊ธฐํ ์์ ์์ ๋ทฐ๋ state์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค. ์ด๊ฒ์ด ๋ทฐ์ ๊ตฌ์ถ์์ ์ ๊ฐ๋จํ๊ฒ ๋ง๋ญ๋๋ค. ์๋ํ๋ฉด ์ ์ฒด ๋ทฐ ๊ณ์ธต์ด ๋ง๋ค์ด์ง๋ ๊ฒ์ด ์ ํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ด๊ธฐํ ์์ ์ดํ, body๊ฐ ๊ณ์ฐ๋๊ธฐ ์ ์ ๋ทฐ๊ฐ state์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- View์ body๊ฐ ์ฒ์์ผ๋ก ํธ์ถ๋ฉ๋๋ค.
- ๋ทฐ ๊ทธ๋ํ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๋ณ๊ฒฝ์ฌํญ์ ๋ ๋๋งํฉ๋๋ค.
- onAppear() ๋ฉ์๋๋ top-down ๋ฐฉ์(๋ทฐ๋ชจ ๋ทฐ์์ ์์ ๋ทฐ ์์๋ก)์ผ๋ก ํธ์ถ๋ฉ๋๋ค.
Updating
Updating ์ ์ธ๋ถ ์ด๋ฒคํธ๋ ์ํ ๋ณ๊ฒฝ์ ๋ํ ์๋ต์ผ๋ก ์ํ๋ฉ๋๋ค.
(์ฌ๊ธฐ์ ์ธ๋ถ ์ด๋ฒคํธ๋ Combine publisher๋ฅผ ์๋ฏธ)
- ์ฌ์ฉ์ ์์ ์ผ๋ก ์ธํด ์ํ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ SwiftUI๊ฐ View.onRecieve()๋ฅผ ํตํด ๊ด์ฐฐ๋ publisher๊ฐ ๋ฐฉ์ถํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์งํฉ๋๋ค.
- ๋ณ๊ฒฝ๋ state๋ฅผ ์์ ํ๊ณ ์๊ฑฐ๋ ์ธ๋ถ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ๋ทฐ์ ๊ทธ ๋ทฐ์ ๋ชจ๋ ์์๋ค์ ์ด์ ์ค๋ ์ท๊ณผ ๋น๊ตํฉ๋๋ค. (Equatable ํ๋กํ ์ฝ ์ด์ฉํด ๋น๊ต ์์ ์ํ)
- SwiftUI๋ ๋ณ๊ฒฝ๋ ๋ทฐ๋ค์ ๋ฌดํจํํฉ๋๋ค.
- ๋ทฐ ๊ทธ๋ํ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๋ฌดํจํ๋ ๋ทฐ๋ค์ ๋ ๋๋งํฉ๋๋ค. ๋ชจ๋ ์ ๋ฐ์ดํธ๋ ๋ทฐ ๊ณ์ธต์ ํตํด ์๋๋ก ํ๋ฌ ๋ด๋ ค๊ฐ๋๋ค.
์ฐธ๊ณ ) state์ ์ฐ๊ฒฐ๋ ๋ทฐ๋ง custom equality implementation์ ์ ๊ณตํ ์ ์์ต๋๋ค. state์ ์ฐ๊ฒฐ๋์ง ์์ ๋ทฐ๋ ํญ์ ๋ค์ ๋ ๋๋ง๋ฉ๋๋ค.
์ค์ํ ์ ์ state๋ฅผ ๋ทฐ ๊ณ์ธต ์๋๋ก pushํ๋ฉด state๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ฌดํจํ๋๊ณ ๋ค์ ๋ ๋๋ง๋ ๋ทฐ์ ์๊ฐ ๊ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค.
Disappearing
disappearing์ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ์์ ๋ทฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
onDisappear()๋ฉ์๋๋ ๊ณ์ธต ๊ตฌ์กฐ์์ ๋ทฐ๊ฐ ์ ๊ฑฐ๋ ํ์ ํธ์ถ๋ฉ๋๋ค.
onAppear()์ ๋ง์ฐฌ๊ฐ์ง๋ก onDisappear() ๋ํ top-down ๋ฐฉ์(์์ ๋ทฐ์์ ํ์ ๋ทฐ๋ก)์ผ๋ก ํธ์ถ๋ฉ๋๋ค.
Life Cycle Method
onAppear
- View๊ฐ ๋ณด์ด๊ธฐ ์ ์ action์ ์ํํ๋ ํจ์
- View๊ฐ ์ฒซ ๋ ๋๋ง ๋๊ธฐ ์ ์ action ํด๋ก์ ๊ฐ ๋๋๋ ๊ฒ์ ๋ณด์ฅ
- → onAppear์์ ์๊ฐ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ์ํํ๋ค๋ฉด ๋ทฐ๊ฐ ๋ฆ๊ฒ ๋ธ (์์ ๋๋ด๊ณ appear์ํค๊ธฐ ๋๋ฌธ)
task
- View๊ฐ ๋ณด์ด๊ธฐ ์ ์ ๋น๋๊ธฐ task๋ฅผ ์ํํ๋ ํจ์
- → ๋น๋๊ธฐ task ์ด๋ฏ๋ก task ์ข ๋ฃ ์ฌ๋ถ์ ์๊ด์์ด task๊ฐ ๋๋๊ธฐ ์ ์ View๊ฐ ๊ทธ๋ ค์ง ์ ์์
- task๊ฐ ๋๋๊ธฐ ์ ์ View๊ฐ ์ฌ๋ผ์ง๊ฒ(disappear) ๋๋ฉด ์๋์ผ๋ก task๋ฅผ cancel ์ํด
- iOS 15 ์ด์๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅ
onDisappear
- View๊ฐ ์ฌ๋ผ์ง๊ณ ๋ ์ดํ์ action์ ์ํํ๋ ํจ์
onChange
- View์ ํน์ ์ํ ์์ฑ์ด ๋ณ๊ฒฝ๋ ๋ ํธ์ถ๋๋ ํจ์
- ์ด ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ํ๋ฉด์ ๋ค์ ๊ทธ๋ฆฌ๋ ์์ ์ ์ํํ ์ ์์
[์ฐธ๊ณ ์๋ฃ]
'๐ iOS > SwiftUI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SwiftUI] View ์ ๋ฐ์ดํธ ๋ฐฉ์ - @State, @Binding (2) | 2024.08.20 |
---|