์๋ช ์ฃผ๊ธฐ(Lifecycle)์ด๋ ๋ฌด์์ธ๊ฐ?
⇒ ์ธ์ ํน์ ๋ก์ง์ ํ๊ณ ์ถ๋ค๋ฅผ ์ด๋์ ์์ฑํ๋ฉด ๋๋ค๋ผ๋ ๋ฌธ์ ๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๊ฐ๋
App States
- Not running: ์ฑ์ด ์คํ๋์ง ์๊ฑฐ๋ ์ข ๋ฃ๋ ์ํ
- Foreground: ํ๋ฉด์ด ๋ํ๋ ์ํ
- inActive: ์ํธ์์ฉ์ด ๋ถ๊ฐ๋ฅํ ์ํ, ํ๋ฉด์ ๋ณด์ ex) ์ ํ๊ฐ ์์ ๋, ์์คํ ๋ฉ์์ง๊ฐ ๋ด์ ๋ ('๋ฐฐํฐ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค')
- Active: ์ํธ์์ฉ์ด ๊ฐ๋ฅํ ์ํ, ์ฑ์ด ์คํ๋๊ณ ์๋ ์ํ
- Background: ํ๋ฉด์ด ์ฌ๋ผ์ง ์ํ
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์์ ์ค์ง์ ์ธ ๋์์ ํ๊ณ ์๋ ์ํ ex) ํ์ผ ๋ค์ด๋ก๋, ์ ํ๋ธ ์์ ์คํ
- Suspended: ๋ญ๊ฐ ์ก์๋ ์ํ
- ๋น ๋ฅธ ์ฌ์คํ์ ์ํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต์ํ์ผ๋ก๋ง ์ก๊ณ (ํ ๋นํ๊ณ ) ์์
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ฉด ์์คํ ์ด Suspended ์ํ์ ์ฑ์ ์ข ๋ฃ์ํด
- iOS๋ App switcher์ํ์์ ์ฑ์ ๊ฐ์ ์ข ๋ฃํ๋ ๊ฒ์ด ๋ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์๋ชจํจ -> Suspended ์ํ ์ ์งํ๋ค๊ฐ ์ฑ ํค๋๊ฒ ๋ ๋์
View Life Cycle
1. loadView
: ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ๋ฉ์ธ ๋ทฐ๋ฅผ ๋ก๋ ํ ๋ ํธ์ถ๋๋ ๋ฉ์๋, ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ฐ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ ๋ฆฌ๋ณด๋์ ์๋ ๋ทฐ๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ตณ์ด ํ์ํ์ง ์์. xib(nib)์ ์์ฑํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ.
2. viewDidLoad
: ๋ทฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ํ์ ํธ์ถ๋๋ ๋ฉ์๋.
3. viewWillAppear
: ๋ทฐ๊ฐ ๊ณ์ธต์ ์ถ๊ฐ๋๊ณ , ํ๋ฉด์ ํ์ํ๊ธฐ ์ง์ ์ ์ํ.
4. viewWillLayoutSubviews
: ๋ทฐ์ bounds๊ฐ ๋ณํ๋ฉด ๋ทฐ๋ ํ์ ๋ทฐ๋ค์ ์์น๋ฅผ ์กฐ์ ํ๋๋ฐ, ๋ ์ด์์์ด ๊ฒฐ์ ๋๊ธฐ ์ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ๊ณ ์ ํ ๋ ์ฌ์ฉ, ์คํ ๋ ์ด์์์ ์ฌ์ฉํ์ง ์์๋ค๋ฉด ์๋ธ๋ทฐ์ ๋ ์ด์์์ ์ ๋ฐ์ดํธํ๊ธฐ ์ ํฉ
- ๋ทฐ ์ถ๊ฐ / ์ ๊ฑฐ
- ๋ทฐ ํฌ๊ธฐ / ์์น ์ ๋ฐ์ดํธ
- Layout constraint ์ ๋ฐ์ดํธ
- Main View์ SubView Load (UITableView, UICollectionView...)
5. viewDidLayoutSubviews
: ๋ ์ด์์์ด ๊ฒฐ์ ๋๊ณ ๋์ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ๊ณ ์ ํ ๋ ์ฌ์ฉ, ์๋ธ๋ทฐ๊ฐ ์ ํ ๋ ํ ๋ณ๊ฒฝํ ์ ์ด ์๋ค๋ฉด ์ด ๋ ์์ ํ๊ธฐ์ ์ ํฉ
- ๋ค๋ฅธ ๋ทฐ๋ค์ Content ์ ๋ฐ์ดํธ
- ๋ทฐ๋ค์ ํฌ๊ธฐ๋ ์์น๋ฅผ ์ต์ข ์ ์ผ๋ก ์กฐ์
- table์ ๋ฐ์ดํฐ reload
6. viewDidAppear
: ๋ทฐ๊ฐ ํ๋ฉด์ ํ์๋ ์ดํ์ ์ํ, ๋ทฐ๋ฅผ ๋ณด์ฌ์ค ๋ ํ์ํ ์ถ๊ฐ์ ์ธ ์์ ๋ด๋น
7. viewWillDisappear
: ๋ทฐ๊ฐ ๊ณ์ธต์์ ์ฌ๋ผ์ง๊ธฐ ์ง์ ์ ์ํ. ๋ทฐ๋ฅผ ์์ฑํ๊ณ ๋์ ํ๋ ํ๋๋ค์ ๋๋๋ฆฌ๊ฑฐ๋ ์ ๋ณด๋ฅผ ์ญ์ ํ๊ธฐ ์ ์ ์ฅํด๋ ๋ ์ ์ฉ
8. viewDidDisappear
: ๋ทฐ๊ฐ ๊ณ์ธต์์ ์ฌ๋ผ์ง ๋ค ์ํ.
์์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉ ์์๋ override ํค์๋์ super ํค์๋๋ฅผ ๋ช ์์ ์ผ๋ก ๋ถ์ฌ์ค๋ค.
App Delegate & Scene Delegate
iOS 13๋ถํฐ AppDelegate์ ์๋ ํจ์๋ค์ SceneDelegate์์ ๊ด๋ฆฌํด์ฃผ๊ธฐ ์์ํ๋ค.
๊ณผ๊ฑฐ(~iOS 12) LifeCycle
ํ์ฌ(iOS 13~) LifeCycle
Window์ ๊ฐ๋ ์ด Scene์ผ๋ก ๋์ฒด๋๋ฉด์ ํ๋์ ์ฑ์์ ์ฌ๋ฌ ๊ฐ์ Scene์ ๊ฐ์ง ์ ์๋๋ก ํ๋ค. ์ค์ค~
์๋ ์ฌ์ง์ฒ๋ผ multiple instance๋ฅผ ํจ๊ป ๊ด๋ฆฌํ ์ ์๊ฒ ๊ฐ๋ ์ ๋ณ๊ฒฝํ๊ฑด๊ฐ๋ด
๊ด๋ จ ๋ฌธ์: