- Frame์ ์์ ์
์์ ๋ทฐ์ ์ขํ๊ณ
๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น๋ฅผ ํํํ๊ณ , Bounds๋์๊ธฐ์์ ์ ์ขํ๊ณ
๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น๋ฅผ ํํํฉ๋๋ค. - Frame์ ์ฌ์ด์ฆ๋ ๋ทฐ์ x ์ขํ ์ต์, ์ต๋๊ฐ, y ์ขํ์ผ๋ก ์ต์, ์ต๋๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค. ๋ฐ๋ฉด์ Bounds๋
๋ทฐ ์์ฒด์ ํฌ๊ธฐ
๋ก ์ฌ์ด์ฆ๋ฅผ ์ ํฉ๋๋ค. - Frame์ ์์น๋ฅผ ๋ณ๊ฒฝํ๋ฉด
๋ทฐ๊ฐ ์ด๋
ํ์ง๋ง, Bounds๋๋ทฐํฌํธ๊ฐ ์ด๋
ํฉ๋๋ค. ๋ฐ๋ผ์ 50pt ๋งํผ x์ขํ๋ฅผ ์ฆ๊ฐ์ํค๋ฉด ์ค์ ๋ก๋ 50pt ๋งํผ ์ผ์ชฝ์ผ๋ก ์ด๋ํ ๊ฒ ์ฒ๋ผ ๋ณด์ ๋๋ค.
์คํฌ๋กค ๋ทฐ
๋ ์คํฌ๋กค ๋ ๋๋ง๋ค ์คํฌ๋กค ๋ทฐ์ Bounds๋ฅผ ์ ๋ฐ์ดํธ ํฉ๋๋ค. ๋ง์ฝ ์ผ์ชฝ์ผ๋ก ์ค์์ดํํด์ ์คํฌ๋กคํ๋ฉด bounds์ x์ขํ๊ฐ ์ฆ๊ฐํฉ๋๋ค.
3. ์ค์ ๋๋ฐ์ด์ค๊ฐ ์์ ๊ฒฝ์ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ ์ ์๋ ๊ฒ๊ณผ ์๋ ๊ฒ์ ์ค๋ช ํด์ฃผ์ธ์.
- ๊ฐ๋ฐํ๊ฒฝ์์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ,
์ธ ์๊ฐ๋ฝ ์ด์์ ํฐ์น ์ ์ค์ณ
๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ์๋ฎฌ๋ ์ดํฐ์์๋
์นด๋ฉ๋ผ, ๋ง์ดํฌ, ์ ํ, ์ผ์
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ์ฑ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ ํ, ํฐ์น ๋ฑ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์๋ฎฌ๋ ์ดํฐ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋คํฌ๋ชจ๋
,๊ฐ๋ฐ์์ฉ ๋คํธ์ํฌ ์ค์
๋ ์๋ฎฌ๋ ์ดํฐ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
4. ์ฑ ํ๋ฉด์ ์ฝํ ์ธ ๋ฅผ ํ์ํ๋ ๋ก์ง๊ณผ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๊ฐ์ฒด๋ฅผ ๋ฌด์์ด๋ผ๊ณ ํ๋๊ฐ?
UIViewController
์ ๋๋ค. ๋ทฐ ์ปจํธ๋กค๋ฌ๋ UIKit์ผ๋ก ๊ตฌ์ฑ๋ ์ฑ์ ๋ทฐ ๊ณ์ธต๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ทฐ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ก์ง์ ๋ด๊ณ ์์ต๋๋ค.
- ์ฑ ์๋์ ์ฑ์ด ์ค์น๋ ๋ ์ฑ์คํ ์ด์ ์ด์์ฒด์ ๊ฐ ์ฑ์ด ์ค์น๋๋
๋๋ฐ์ด์ค์ ํน์ฑ์ ๋ง๊ฒ
์ฑ์ ์ค์นํ๋ ์ต์ ํ ๊ธฐ์ ์ ๋๋ค. - ์ฑ ์๋์ ์ธ ๊ฐ์ง ๊ธฐ์ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๋จผ์
์ฌ๋ผ์ด์ฑ
์ ์ฑ์ ๊ตฌ์ฑํ๋ ์ฌ๋ฌ ๋ฒ์ ์ ์คํ ๊ฐ๋ฅํ ์ฝ๋์ ๋ฆฌ์์ค๋ค ์ค ์ฑ์ ์ค์นํ๋๋ฐ์ด์ค ์คํ์ ๋ง๋ ๋ฒ์ ๋ค๋ง ๊ณจ๋ผ์ ์ค์น
ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฑ์ ์ฑ์คํ ์ด์ ์ฌ๋ฆฌ๊ฒ๋๋ฉด ์ฑ์คํ ์ด๊ฐ ์ฌ๋ฌ ๋ฒ์ ์ ํ์ผ๋ค์ ์ค๋นํ๊ณ ๋ค์ด๋ก๋์ ๋๋ฐ์ด์ค์ ๋ง๊ฒ ์ฌ๋ผ์ด์ฑํฉ๋๋ค. - ๋ค์์
์ฃผ๋ฌธํ ๋ฆฌ์์ค
๋ ์ฑ์ ์ค์นํ ๋ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๋ค ์ค์นํ๋ ๊ฒ์ด ์๋๋ผ ์ผ๋ถ๋ ์ฑ ์คํ ์ด์ ์ ์ฅํด๋๊ณ ์ฌ์ฉ์๊ฐ ํ์๋กํ ๋๋ง ๋ค์ด๋ก๋ ํ๋ ๋ฐฉ์์ ๋๋ค. - ๋ง์ง๋ง์ผ๋ก
๋นํธ์ฝ๋
๋ ์ฑ์คํ ์ด์ ์ฑ์ ์ฌ๋ฆด ๋ ๊ธฐ๊ณ์ด๋ก ๊ตฌ์ฑ๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ด ์๋๋ผ ๊ทธ ์ ๋จ๊ณ์ธ ๋นํธ์ฝ๋๋ก ์ ๋ก๋ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋นํธ ์ฝ๋๋ก ๋ ํ์ผ ์ค ์ฌ์ฉ์ ํ๊ฒฝ์ ๋ง๋ ๋นํธ์ฝ๋๋ค๋ง ๋ค์ ์ปดํ์ผํด ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
6. ์ฑ์ด ์์ํ ๋ main.c ์ ์๋ UIApplicationMain ํจ์์ ์ํด์ ์์ฑ๋๋ ๊ฐ์ฒด๋ ๋ฌด์์ธ๊ฐ?
- UIApplicationMain์ด ์คํ๋๋ฉด
UIApplication
๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค. - ๋ํ AppDelegate์ SceneDelegate ๊ฐ์ฒด๋ ์์ฑํฉ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก ์ฑ์ ๋ฃจํธ๊ฐ๋๋ window ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ต์ด ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ํ ๋นํฉ๋๋ค.
- UIApplication์ UIApplicationMain์์ ๋ง๋ค์ด์ง๋ ์ฑ๊ธํค ๊ฐ์ฒด์ ๋๋ค. UIApplication์ ์ต์ด์ ๋ฐ๋ฃจํ๋ฅผ ๋ง๋ค๊ณ AppDelegate์๊ฒ delegate๋ฅผ ์์ํฉ๋๋ค.
- ์์คํ ์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๊ฐ UIKit์ ์ํด UIEvent๊ฐ์ฒด๋ก ๋ง๋ค์ด์ง๋ฉด UIApplication.shared.sendEvent()๋ฅผ ํตํด ํด๋น ์ด๋ฒคํธ๋ฅผ ์ด๋ฒคํธ ํ์ ์ ๋ฌํฉ๋๋ค.
- ์ฑ์ ์์ํ๊ณ ์ฑ์
์๋ช ์ฃผ๊ธฐ
๊ฐ ๋ณํ๋ ๋๋ง๋ค ์ํฉ์ ์์ํ๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋
์์ ๋ค์ด๋ก๋ ์์ ์ด ์งํ๋์ด์ผํ ๋์ ๋ฉ์๋๊ฐ ์์ต๋๋ค.- ์ฑ์
Scene
์ด ์๋ก ์์ฑ๋๊ฑฐ๋ ์ง์์ง ๋ ํธ์ถ๋๋ ๋ฉ์๋๋ ์์ต๋๋ค. - APN ๋ฑ๋ก์ฒ๋ผ ์ฑ์ ์คํ์ด ์์๋๋ฉด์ ๋ฑ๋กํด์ผํ๋
์๋น์ค
์์ ๋ค์ ๋ํ ๋ฉ์๋๊ฐ ์์ต๋๋ค.
applicationDidBecomeActive
: ์ฑ์ด active ์ํ๊ฐ ๋๋ฉด ํธ์ถ๋ฉ๋๋ค.applicationWillResignActive
: ์ฑ์ด inactive ์ํ๋ก ์ ํ๋๊ธฐ ์ง์ ์ ํธ์ถ๋ฉ๋๋ค.applicationDidEnterBackground
: ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ๋ก ๋ค์ด๊ฐ๋ฉด ํธ์ถ๋ฉ๋๋ค.applicationWillEnterForeground
: ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ํ๋ฉด์ผ๋ก ๋ค์ด์ค๊ธฐ ์ง์ ์ ํธ์ถ๋ฉ๋๋ค.applicationWillTerminate
: ์ฑ์ด ์ข ๋ฃ๋๊ธฐ ์ง์ ์ ํธ์ถ๋ฉ๋๋ค.
- ์๋ฆฌ๊ฐ ์ผ์ง๊ฑฐ๋ ์ ํ์๋ฆผ, ์๋ฌํธ๊ฐ ๋จ๋ ์ํฉ ๋ฑ ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ง ๋ชปํ๋ ์ํฉ์์ inactive์ํ๊ฐ ๋ฉ๋๋ค.
- iOS 13๋ถํฐ iOS๋ Multiple Window๋ฅผ ์ง์ํ๊ธฐ ์์ํ์ต๋๋ค. ํ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ๊ฐ์ ํ๋ฉด์ ๊ฐ์ง ์ ์๋ ๊ฒ์ธ๋ฐ์, ์ด ๋๋ฌธ์ UI ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ฑ ์ ์ฒด์ ๋ํด ๊ด๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ ์ฐฝ์ ๋ํด ๊ด๋ฆฌํ ํ์๊ฐ ์์ด์ก์ต๋๋ค. SceneDelegate๋ ์ด๋ฅผ ์ํด ๊ฐ ํ๋ฉด๋ง๋ค ๋ง๋ค์ด์ ธ์ AppDelegate๊ฐ ๊ฐ์ง๊ณ ์๋ UI์๋ช ์ฃผ๊ธฐ์ ๊ด๋ จ๋ ๋ฉ์๋๋ค์ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
- Not running์ ์ฑ์ด ์์ง ์คํ๋์ง ์์ ์ํ, Inactive๋ ์คํ๋๊ณ ์์ง๋ง ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ ์๋ ์ํ, Background๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฝ๋๋ฅผ ์คํ์ค์ธ ์ํ, Suspended๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฝ๋๋ฅผ ์คํ์ค์ด์ง ์์ ์ํ๋ฅผ ์๋ฏธํฉ๋๋ค.
13. iOS ์ฑ์ ๋ง๋ค๊ณ , User Interface๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ํ์์ ์ธ ํ๋ ์์ํฌ ์ด๋ฆ์ ๋ฌด์์ธ๊ฐ?
- UIKit์ ๋๋ค.
14. Foundation Kit์ ๋ฌด์์ด๊ณ ํฌํจ๋์ด ์๋ ํด๋์ค๋ค์ ์ด๋ค ๊ฒ์ด ์๋์ง ์ค๋ช ํ์์ค.
- ์ค์ํํธ์์ ์ฌ์ฉํ๋ String, Double๊ณผ ๊ฐ์ ๊ธฐ๋ณธํ์ ๋ค๊ณผ Array, Dictionary๊ฐ์ ์ฝ๋ ์ ํ์ ์ด ๋ค์ด๊ฐ ์๊ณ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ์ ๋๋ค.
15. Delegate๋ ๋ฌด์ธ์ธ์ง ์ค๋ช ํ๊ณ , retain ๋๋์ง ์๋๋์ง ๊ทธ ์ด์ ๋ฅผ ํจ๊ป ์ค๋ช ํ์์ค.
- Delegate๋ ์์ ์ ์ญํ ์ ๋ค๋ฅธ ๋๊ตฐ๊ฐ์๊ฒ ์์ํ๋ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ๋กํ ์ฝ๋ก ์์ํ ๋์๋ค์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ฉํ ๋ค, ์ด ํ๋กํ ์ฝ์ ์์์ ๋ฐ์ ํ์ ์ ์ฑํ์ํต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ ํด์ค ํ์ ์ weak var delegate๋ฅผ ๋ง๋ค์ด๋๊ณ ํน์ ํ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ delegate์ ๊ตฌํ๋์ด ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด, ์ด๋ฅผ ์์๋ฐ์ ํ๋กํ ์ฝ์ ์ฑํํ๋ ํ์ ์ ํด๋น ๋ฉ์๋์ ๋ํ ๊ตฌํ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ๋์ ์์ฒญํ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
- Delegate ๋ณ์๋ ํญ์ weak var๋ก ์ ์ธํ๊ธฐ ๋๋ฌธ์ retain์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
- notificationCenter๋ ์ฑ๊ธํค ๊ฐ์ฒด๋ก Notification์ ๋ณด๋ผ ๊ฐ์ฒด๋ค์ addObserver๋ก ์ด๊ณณ์ ๋ฑ๋กํฉ๋๋ค. Notification์ ๋ณด๋ผ ๋๋ post ํจ์๋ฅผ ํธ์ถํ๋ฉด post์ ํจ๊ป ์ฃผ์ด์ง ์ ๋ณด๋ฅผ NotificationCenter์ ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ค์๊ฒ ๋ชจ๋ ๋ณด๋ด๊ฒ๋ฉ๋๋ค.
- ์ต์ ๋ฒ ํจํด์ด์ง๋ง ์ค๊ฐ ๋ธ๋ก์ปค ์ญํ ์ ํ๋ NotificationCenter๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ฒด์๊ฒ ์ด๋ค ์ ๋ณด๋ฅผ ๋ณด๋ด๊ณ ์ํ ๋ ๋ธ๋ก๋์บ์คํ ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
17. UIKit ํด๋์ค๋ค์ ๋ค๋ฃฐ ๋ ๊ผญ ์ฒ๋ฆฌํด์ผํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฐ๋ ๋ ์ด๋ฆ์ ๋ฌด์์ธ๊ฐ?
- UI์ ๊ด๋ จ๋ ๋ชจ๋ ์์ ์ ์ฑ์ Main ์ค๋ ๋์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
- App Bundle์ ์คํ๊ฐ๋ฅํ ํ์ผ, ์ฝ๋, ๋ฆฌ์์ค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ์ฑ ์๋๋ฐ์ค ์์๋ Documents, Library, Tmp ๋ฑ์ด ์๊ณ , ์ด์ค์์ Library ์์๋ Application Support, Caches, Preferences ๋ฑ์ ๋๋ ํ ๋ฆฌ๊ฐ ์์ต๋๋ค.
- Documents๋ ์ ์ ๊ฐ ์์ฑํ ๋ฌธ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ง์ ์ ๊ทผํ ์ ์๊ณ ์ค์ ์ ๋ฐ๋ผ์ ์ญ์ ๋ ๊ฐ๋ฅํฉ๋๋ค. iCloud์ ๋ฐฑ์ ์ด ๋๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
- Library๋ ์ ์ ์ ํ์ผ์ด๋ ์์ํ์ผ์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค. ์ด์ค Application Support๋ ์ฑ์ ๊ธฐ๋ฅ์ ์ ์งํ๊ธฐ ์ํด ๊ด๋ฆฌ๋๋ ๋ฐ์ดํฐ๋ค์ด ์ ์ฅ๋๊ณ ์ฝ์ด๋ฐ์ดํฐ์ ๊ธฐ๋ณธ ์ ์ฅ ๊ฒฝ๋ก๊ฐ ๋๊ธฐ๋ ํฉ๋๋ค. iCloud์ ๋ฐฑ์ ์ด ๋ฉ๋๋ค.
- Library์ Caches ๋๋ ํ ๋ฆฌ๋ ์์์ ์ผ๋ก ๋ณด๊ดํ ํ์ผ๋ค์ด ์ ์ฅ๋ฉ๋๋ค. iCloud์๋ ๋ฐฑ์ ๋์ง ์์ต๋๋ค.
- Caches ๋ด๋ถ์๋ Snapshot ๋๋ ํ ๋ฆฌ๋ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ค์ด๊ฐ ๋ ์์คํ ์ ๋ง์ง๋ง ๋ทฐ์ ๋ํ ์ค๋ ์ท์ ์ฐ์ด ์ด๊ณณ์ ์ ์ฅํด๋๊ณ Suspended์๋ ์ฑ์ด ์ฌ์คํ๋๋ฉด ๋ฐ์น์คํฌ๋ฆฐ์ด ์๋ ์ค๋ ์ท์ ๋ณด์ฌ์ฃผ์ด์ ์ฌ์์๋์ง ์๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๊ฒํฉ๋๋ค.
- Preferences ๋๋ ํ ๋ฆฌ๋ ์ฑ์ ์ค์ ์ ๋ณด๋ค์ด ์ ์ฅ๋ฉ๋๋ค.
- UIViewController์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ UIViewController์ ์์ํด๋์ค๋ UIResponder์ ๋๋ค.
- UIViewController์ ์ญํ ์ ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๋ทฐ์์ ์ ๋ฌ๋๋ ์ฌ์ฉ์ ์ด๋ฒคํธ์ ์ํธ์์ฉํ๋ ๊ฒ์ด ์์ต๋๋ค.
- Xib๋ฅผ ๋ง๋ค์ด ๋ทฐ๋ฅผ ์ก๊ณ ๊ด๋ จ๋ ์ฝ๋๋ฅผ UIView๋ฅผ ์์ํ๋ ํด๋์ค๋ฅผ ์ ์ํ๊ฑฐ๋, ํด๋์ค๋ก ์ ์ํด ๋ด๋ถ์์ ๋ ์ด์์๊น์ง ์ก์์ค ์๋ ์์ต๋๋ค.
- UIView๋ UIResponder๋ฅผ ์์ํด ๊ตฌํ๋ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ์ปจํ ์ด๋ ์ญํ ์ ํ๋ ๊ฐ์ฒด์ ๋๋ค. ์ด ๊ฐ์ฒด๋ฅผ ํตํด ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋๊ณ drawํจ์๋ฅผ ํธ์ถํด ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค.
- layer์ ํ์ ์ CALayer์ ๋๋ค. CA๋ Core Animation ํ๋ ์์ํฌ์ ์ฝ์์ด๊ณ UIKit๋ณด๋ค ํ๋จ๊ณ ๋ฎ์ ์ ์์ค์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํ๋ ์์ํฌ์ ๋๋ค. ์ ๋๋ฉ์ด์ ์ด๋ ์ข ๋ ๋ณต์กํ ํ๋ฉด์ ๋ํ ์ฒ๋ฆฌ๋ CALayer๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๊ณ , CALayer๋ ๋ณ๋์ ์ค๋ ๋์์ GPU๋ฅผ ์ฌ์ฉํด ํ๋ฉด์ ๊ทธ๋ฆฌ๊ฒ๋ฉ๋๋ค.
- UIWindow๋ ์ง์ ์ ์ผ๋ก ์๊ฐ์ ์ธ ๋ด์ฉ์ ๋ํ๋ด์ง๋ ์์ง๋ง ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ชจ๋ ๋ทฐ๋ค์ ๋ถ๋ชจ๊ฐ๋๋ ์ปจํ ์ด๋ ์ญํ ์ ํ๋ ๊ฐ์ฒด์ ๋๋ค.
- UINavigationController๋ ์คํ์ฒ๋ผ ํ๋ฉด๋ค์ ์์์ ํ๋ฉด๊ฐ ์ด๋์ ๊ด๋ฆฌํ๋ ์ปจํ ์ด๋์ ๋๋ค.
26. TableView๋ฅผ ๋์ ๋ฐฉ์๊ณผ ํ๋ฉด์ Cell์ ์ถ๋ ฅํ๊ธฐ ์ํด ์ต์ํ ๊ตฌํํด์ผ ํ๋ DataSource ๋ฉ์๋๋ฅผ ์ค๋ช ํ์์ค.
- ์ธ๋ฑ์ค๋ง๋ค ์ด๋ค ์ ์ ์ฌ์ฉํ ์ง ๋ฐํํ๋ cellForRowAt์ด ์๊ณ , ์น์ ๋ง๋ค ํ์ํ ์ ์ ๊ฐ์๋ฅผ ๋ฐํํ๋ numberOfRowsInSection์ด ์์ต๋๋ค.
func tableView(UITableView, cellForRowAt: IndexPath)
func tableView(UITableView, numberOfRowsInSection: Int)
27. ํ๋์ View Controller ์ฝ๋์์ ์ฌ๋ฌ TableView Controller ์ญํ ์ ํด์ผ ํ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๊ตฌ๋ถํด์ ๊ตฌํํด์ผ ํ๋์ง ์ค๋ช ํ์์ค.
- IBOulet์ ๋ง๋ค์ด๋๊ณ delegate๊ฐ ์คํ๋ ๋ ์ธ์๋ก ์ ๋ฌ๋๋ TableView์ ์ธ์คํด์ค๋ฅผ IBOutlet๊ณผ ๋น๊ตํ๊ฑฐ๋, tag๋ฅผ ์ด์ฉํด์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
- setNeedsLayout์ ๋ทฐ์ ์์น์ ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ layoutSubviews๋ฅผ ๋ค์ ์ ๋ฐ์ดํธ ์ฌ์ดํด์ ํธ์ถํ๋๋ก ์์ฝํ๋ ๋ฉ์๋์ ๋๋ค. setNeedsDisplay๋ ๋ทฐ์ ๋ด์ฉ์ ๊ทธ๋ฆฌ๋ draw ๋ฉ์๋๋ฅผ ๋ค์ ์ ๋ฐ์ดํธ ์ฌ์ดํด์ ํธ์ถํ๋๋ก ์์ฝํ๋ ๋ฉ์๋์ ๋๋ค.
- NSCache๋ ๋ด๋ถ์ ์ผ๋ก ์บ์์ ์ฑ ์ ๊ฐ์ง๊ณ ์์ด์ ์ ์ฅํ๋ ์ค๋ธ์ ํธ์ ๊ฐ์๋ cost๋ฅผ ์ ํด๋๊ณ ์ด๊ณผ๋๋ฉด ์ ์ฑ ์ ๋ฐ๋ผ ์ค๋ธ์ ํธ๋ฅผ ์ญ์ ํฉ๋๋ค. ๋์ ๋๋ฆฌ๋ ๋ด๋ถ์ ์ผ๋ก ๋ฐ๋ก ์ ์ฑ ์ด ์์ต๋๋ค. ๋ํ NSCache๋ thread safeํ๊ธฐ๋ ํฉ๋๋ค.
- LRU์ LFU์ ํ์ด๋ธ๋ฆฌ๋๋ผ๊ณ ์๊ณ ์์ต๋๋ค. ๊ณต์๋ฌธ์์ ๋ฐ๋ก ๋์์์ง ์์ง๋ง libs ์ฝ๋๋ฅผ ๋ณด์์ ๋ ์์ฃผ ์ฐธ์กฐ๋ ๋ฐ์ดํฐ๋ ์ง์ฐ์ง ์์ ์ฑ๋ก ๊ฐ์ฅ ์ค๋์ ๋ฐ์ดํฐ๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ง์์ฃผ๊ณ ์์ต๋๋ค.
https://github.com/gnustep/libs-base/blob/master/Source/NSCache.m
- cost๋ ์ค๋ธ์ ํธ์ ๊ฐ์์ด๊ณ cost๋ ์ค๋ธ์ ํธ์ ํฌ๊ธฐ์ ๋๋ค. setํ ๋ ์ค๋ธ์ ํธ์ ๋ํ cost๋ฅผ ํจ๊ป ๋ฐ์ ์ ์๊ณ , cost๊ฐ ํ๊ณ๊ฐ์ผ๋ก ์ ํด๋ ํฌ๊ธฐ๋ณด๋ค ์ปค์ง๋ฉด ์บ์ ์ ์ฑ ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- URLSession์ ๋คํธ์ํฌ ํต์ ์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ํ๋ ์์ํฌ์ ํด๋์ค์ ๋๋ค.
- SessionTask๋ฅผ ๋ง๋ค๊ณ ์ฌ๊ธฐ์ ํต์ ์ ๋ํ ์ค์ ๊ณผ ์ฝ๋ฐฑ์ ์ ์ํด์ ๋๊ธฐ๋ฉด ๋คํธ์ํฌ ํต์ ์ด ์๋ฃ๋์์ ๋ ํด๋ก์ ๊ฐ ์คํ๋ฉ๋๋ค.
- default๋ ๊ธฐ๋ณธ ์ํ, emphemral์ ์บ์๋ฅผ ์ง์ฐ์ง ์์ ๋, backgound๋ ์ฑ์ด ๋ฐฑ์ค๋ผ์ด๋์์ ๋ค๋ฃฌ๋ก๋๋ฅผ ๋ฐ์ ์ ์๊ฒํฉ๋๋ค.
- dataTask๋ NSData ํ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ค๋ฐ๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ ์ ์ฅ์์๋ ์ ์ฅํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ธ์ ์ ์ง์ํ์ง ์์ต๋๋ค. downloadTask๋ก ๋ด๋ ค๋ฐ์ ํ์ผ์ temp ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ธ์ ์ ์ง์ํฉ๋๋ค.
- prepareForReuse๋ ํ ์ด๋ธ ๋ทฐ๋ ์ปฌ๋ ์ ๋ทฐ์์ ์ ์ ์ฌ์ฌ์ฉํ ๋ ํธ์ถ๋๋ ๋ฉ์๋์ ๋๋ค. ํ๋ฉด์์ ์ฌ๋ผ์ง ์ ์ ๋ฆฌ์ ์ ๋ธ ํ์ ์ ์ฅ๋๊ณ cellForItemAt ์์ dequeue๋์์ ๋ ๋ค์ ์ฌ์ฌ์ฉ๋ฉ๋๋ค. prepareForReuse๋ cellForItemAt ์ด ํธ์ถ๋๊ธฐ ์ ์ ํธ์ถ๋์ด์ ์ ์ ์ค์ ๋ค์ ์ด๊ธฐํํ ์ ์๋๋ก ๋์์ค๋๋ค.
- ๊ฐ๋จํ๊ฒ๋ Asset์์ ๋คํฌ๋ชจ๋์ ์ผ๋ฐ ๋ชจ๋์ ๋ํ ์ค์ ์ ํด์ค ์ ์์ต๋๋ค. Any, Dark, Light์ ๋ํ ์์์ ๊ฐ๊ฐ ์ค์ ํ ์ ์์ต๋๋ค. ๋, userInterfaceStyle ํ๋กํผํฐ๋ฅผ ํตํด ํ์ฌ ๋๋ฐ์ด์ค๊ฐ ๋คํฌ๋ชจ๋์ธ์ง ๋ผ์ดํธ๋ชจ๋์ธ์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ด์ฉํด์ ์ธํฐํ์ด์ค๋ฅผ ์ธํ ํด์ค ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- loadView, viewDidLoad, viewWillAppear, viewWillLayoutSubviews, viewDidLayoutSubviews, viewDidAppear, viewWillDisappear, viewDidDisappear ๊ฐ ์์ต๋๋ค.
- loadView์์๋ ๋ทฐ ์ปจํธ๋กค๋ฌ์ ๊ธฐ๋ณธ view๋ฅผ ์์ฑํ๊ณ ํ ๋นํฉ๋๋ค. viewDidLoad๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์งํ์ ํธ์ถ๋๊ณ , viewWillAppear๋ ํ๋ฉด์ด ๋ํ๋๊ธฐ ์ง์ ์ ํธ์ถ๋ฉ๋๋ค. viewWillLayoutSubviews๋ ๋ทฐ์ ๋ฐ์ด๋๊ฐ ์ค์ ๋๊ณ ๋ ์ด์์์ด ๋ณ๊ฒฝ๋๊ธฐ ์ง์ ์ ํธ์ถ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ์ด์์์ด ์ค์ ๋๋ฉด viewDidLayoutSubviews๊ฐ ํธ์ถ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฉด์ด ๋ํ๋๋ฉด viewDidAppear๊ฐ ํธ์ถ๋ฉ๋๋ค. ํ๋ฉด์ด ์ฌ๋ผ์ง ๋๋ ์ฌ๋ผ์ง๊ธฐ ์ง์ ์ viewWillDisappear๊ฐ ํธ์ถ๋๊ณ ์ฌ๋ผ์ง ํ๋ viewDidDisappear๊ฐ ํธ์ถ๋ฉ๋๋ค.
- ํ ์ด๋ธ ๋ทฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ์คํฌ๋กค์ ๋ชฉ๋ก๋ง์ ์ง์ํฉ๋๋ค. ๋ฐ๋ฉด์ ์ฝ๋ ์ ๋ทฐ๋ flow layout์ด๋ compositional layout์ผ๋ก ๋ชฉ๋ก์ ๋ ์ด์์์ ๋ ๋ค์ํ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- NSLayoutContraint, Anchor, ๋น์ฃผ์ผ ํฌ๋งท ์ธ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- NSLayoutContraint๋ item, attribute, multiplier, contraint๋ฅผ ์ง์ ํด์ ๋ ๊ฐ์ฒด๊ฐ์ ๋ ์ด์์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- NSLayoutAnchor๋ NSLayoutContraint๋ฅผ ๋ ๊ฐ๋จํ API๋ก ๋ง๋ ๊ฒ์ผ๋ก Anchor์ contraint๋ฅผ ํตํด ๊ฐ์ฒด๊ฐ์ ๋ ์ด์์ ๊ด๊ณ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
- ๋น์ฃผ์ผ ํฌ๋งท์ ์์คํค ๋ฌธ์์ด์ ํตํด ๋ ์ด์์์ ์๊ฐ์ ์ผ๋ก ํํํ์ฌ ๋ ์ด์์์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- hugging์ ์ต๋ ํฌ๊ธฐ์ ๋ํ ์ ํ์ด๊ณ , resistance๋ ์ต์ ํฌ๊ธฐ์ ๋ํ ์ ํ์ ๋๋ค. ๋ฐ๋ผ์ hugging์ ์ฐ์ ์์๊ฐ ๋ค๋ฅธ ๋ทฐ๋ค๋ณด๋ค ๋์ ๋ทฐ๋ ๋ ์ปค์ง์ง ์์ผ๋ ค๊ณ ํ๊ณ , resistence์ ์ฐ์์์๊ฐ ๋ค๋ฅธ ๋ทฐ๋ค๋ณด๋ค ๋์ ๋ทฐ๋ ๋ ์์์ง์ง ์์ผ๋ ค๊ณ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ๊ธธ์ด๊ฐ ์ ํด์ง ์คํ ๋ทฐ ์์ ๋ UILabel์ด ์๋ค๊ณ ํ์ ๋, ์ผ์ชฝ ๋ทฐ์ hugging priority๊ฐ ๋ ๋์ ๋ทฐ๋ ์คํ๋ทฐ๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด ๊ธธ์ด๋ฅผ ๋๋ฆฌ์ง ์๊ณ , ์ค๋ฅธ์ชฝ ๋ทฐ๊ฐ ๊ธธ์ด๋ฅผ ๋๋ ค ์คํ๋ทฐ๋ฅผ ์ฑ์ฐ๊ฒ ๋ฉ๋๋ค.
- ๋ฐ๋๋ก resistence priority๊ฐ ๋ ๋์ ๋ทฐ๋ ๋ ์์์ง์ง ์์ผ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์คํ๋ทฐ์ ํฌ๊ธฐ๊ฐ ๋ UILabel์ ์ปจํ ์ธ ๋ฅผ ๋ชจ๋ ํ์ํ์ง ๋ชปํ๋ ํฌ๊ธฐ๋ผ๋ฉด, resistence priority๊ฐ ๋ ๋ฎ์ ๋ทฐ์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ญ๋๋ค.
- Intrinsic Conetent Size๋ UIButton, UILabel ๋ฑ์์ ์ฌ์ฉ๋์ด์ ๋ทฐ ๋ด๋ถ์ ์ปจํ ์ธ ์ ๋ฐ๋ผ ๊ณ์ฐ๋๋ ๋ทฐ์ ํฌ๊ธฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ปค์คํ ๋ทฐ์์๋ ์ด ํ๋กํผํฐ๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํด์ฃผ๊ณ invalidIntrinsicContentSize๋ฅผ ํธ์ถํด์ฃผ์ด์ผํฉ๋๋ค.
- ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฐ์ ์ผ๋ก ๋ทฐ๋ฅผ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ์คํ ๋ ์ด์์์ด๋ ๋ทฐ์ ๊ตฌ์ฑ์ ๋ฐ๋ก๋ฐ๋ก ํ์ธํ๊ณ ์ฝ๊ฒ ์์ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ํ์ง๋ง ๋ทฐ์ ์ฌ์ฌ์ฉ์ด ์ด๋ ต๊ณ ํ๋ฉด์ด ๋ง์์ง๋ฉด ํ๋ก์ ํธ๋ฅผ ๋ก๋ํ๋ ์๋๊ฐ ๋๋ ค์ง๋ค๋ ์ , ๊ทธ๋ฆฌ๊ณ ํ์ ์์ ์ฌ๋ฌ ์ฌ๋์ด ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์์ ํ๊ฒ๋๋ฉด ์ถฉ๋์ด ์ฝ๊ฒ ๋ฐ์ํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
- safearea๋ iOS ๋๋ฐ์ด์ค์ค ์๋จ ๋ ธ์น ์์ญ๊ณผ ํ๋จ ํ ๋ฐ ์์ญ์ ๋งํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ์ด ์ด ์์ญ๋ค์ ์นจ๋ฒํ์ง ๋ชปํ๋๋ก safearea๋ฅผ ๊ธฐ์ค์ผ๋ก ์คํ ๋ ์ด์์์ ์ค์ ํฉ๋๋ค.
- ๋ฌธ์์ ๋ํ ์ ์ฝ์ ์ค์ ํ ๋ Left๋ ํญ์ ๋ฌธ์์ ์์์ ์ผ์ชฝ์ ๋์ง๋ง Leading์ ์ธ์ด์ ๋ฐ๋ผ์ ์ฐ์ธก์์ ์ข์ธก์ผ๋ก ์ฝ๋ ์ธ์ด๋ ์์์ ์ค๋ฅธ์ชฝ์, ์ข์ธก์์ ์ฐ์ธก์ผ๋ก ์ฝ๋ ์ธ์ด๋ ์์์ ์ผ์ชฝ์ ๋ก๋๋ค.
- UIControl์ UIView๋ฅผ ์์๋ฐ๋ ๊ฐ์ฒด๋ก ์ฌ์ฉ์์ ์ธํฐ๋ ์ ์ ๋ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. UIControl์ ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ addTarget์ผ๋ก UIControl ๊ฐ์ฒด์์ ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌํ ๋ฉ์๋๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
45. CollectionViewLayout์ ์ปค์คํ ํ๊ฒ ์ ์ํ ๋ prepare ๋ฉ์๋๊ฐ ์ธ์ ๋ถ๋ฆฌ๊ณ ์ด๋ค ์ญํ ์ ํ๋์ง
- ์ฝ๋ ์ ๋ทฐ๊ฐ ์ปจํ ์ธ ๋ฅผ ์ฒ์ ํ์ํ๊ฑฐ๋ ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋์ด์ ๋ ์ด์์์ด ๋ฌดํจํ๋๋ฉด ํธ์ถ๋ฉ๋๋ค. prepare ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ๋ ์ด์์ ๊ฐ์ฒด์๊ฒ ๋ ์ด์์์ ์ ๋ฐ์ดํธ ํ๋๋ก ์ํค๊ฒ๋ฉ๋๋ค. ๋ ์ด์์์ด ์ ๋ฐ์ดํธ ๋๊ธฐ ์์ํ๋ฉด ์ฝ๋ ์ ๋ทฐ๊ฐ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ ์ํ ๋ ์ด์์ ๊ฐ์ฒด๊ฐ ๋ ์์ด์์ ์ก์ ์ ์๊ฒ ํฉ๋๋ค.
- Objective-C ๋ฐํ์์ผ๋ก ์คํ๋๋ ๋ฉ์๋๋ฅผ ์ง์ ํ๊ธฐ ์ํด์ ์ฌ์ฉํฉ๋๋ค.
- Autoresizing mask๋ ์ด๋ค ๋ทฐ์ ๋ฐ์ด๋๊ฐ ๋ณ๊ฒฝ๋์์ ๋, ๊ทธ ํ์ ๋ทฐ๋ค์ ํ๋ ์์ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ ์ง ์ ์ํฉ๋๋ค. autoresizing mask๋ ์, ์๋, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ๋ํด ์ค์ ํ ์ ์๊ณ ์ค์ ๋ ๋ฐฉํฅ์ ์์๋ทฐ์ bounds๊ฐ ๋ณํํจ์ ๋ฐ๋ผ ํจ๊ป ๋ณํํ๊ฒ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด์ ์ค๋ฅธ์ชฝ์ ๋ํด Autoresizing mask๋ฅผ ์ค์ ํ๋ฉด ํ๋ฉด์ ํฌ๊ธฐ๊ฐ ๋ณํ๋์ด์ ๊ฐ๋ก ๊ธธ์ด๊ฐ ๋์ด๋ฌ์ ๋, ์ค์ ํ ์๋ธ๋ทฐ์ ๊ฐ๋ก ๊ธธ์ด๊ฐ ํจ๊ป ๋์ด๋๊ฒ ๋ฉ๋๋ค. ์ค์ ์ด ๋์ด์์ง ์์ ๋ฉด๋ค์ ๊ธฐ์กด ํฌ๊ธฐ๋ฅผ ๊ทธ๋๋ก ์ ์งํฉ๋๋ค.
- ์์ ํด๋์ค์ viewDidLoad๋ฅผ ํธ์ถํ์ง ์์๋ ๋ฌธ์ ๋ ์ผ์ด๋์ง ์์ง๋ง, UIKit์ viewDidLoad๊ฐ ์ธ์ ๊ตฌํ์ด ๋ฐ๋์ง ๋ชจ๋ฅด๊ณ , ๋ด๋ถ์ ์ค์ํ ์ด๊ธฐํ ์ฝ๋๊ฐ ๋ค์ด๊ฐ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋น์ฅ ์ํฅ์ด ์๋๋ผ๋ super.viewDidLoad๋ฅผ ํธ์ถํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
- UIResponder๋ ๋ชจ๋ UIView์ ์์ ๊ฐ์ฒด์ด๋ฉด์ ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ณ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ค๋ฅธ UIResponder ๊ฐ์ฒด์๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค. UIKit์ first responder์๊ฒ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๊ณ UIResponder๋ ํด๋น ์ด๋ฒคํธ๋ฅผ ์์ ์ด ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด ์ฒ๋ฆฌํ๊ณ , ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด next ํ๋กํผํฐ์ ํ ๋น๋ ๋ค์ Responder์๊ฒ ์ ๋ฌํฉ๋๋ค.
- UIKit์ด ๋ชจ๋ UIResponder๋ฅผ ์ฎ์ด์ ๊ด๋ฆฌํ๋ ์ฒด์ธ์ ๋๋ค. ๊ฐ ๋ฆฌ์คํฐ๋๋ nextํ๋กํผํฐ๋ก ์์ ์ ๋ค์ ๋ฆฌ์คํฐ๋๋ฅผ ์ฐธ์กฐํ๊ณ ์์ต๋๋ค.
- UIView, UIViewController, UIWindow, UIApplication, UIApplicationDelegate ์์ผ๋ก ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋ฉ๋๋ค. ๋ง์ฝ ์ด๋ค ๋ทฐ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ์์๋ทฐ์ ์ํด์ ธ์๋ ๋ทฐ๋ผ๋ฉด ํด๋น ๋ทฐ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํฉ๋๋ค.
- ํน์ ํ ๋ทฐ์ next ํ๋กํผํฐ๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด์ ๋ค์ ๋ฆฌ์คํฐ๋๋ฅผ ์ง์ ํ ์ ์๊ณ , becomeFirstResponder ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ํน์ ํ ๋ทฐ๋ฅผ firstResponder๋ก ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋๋ ์ด๋ฒคํธ๊ฐ first responder์๊ฒ ์ ๋ฌ๋ฉ๋๋ค.
- ์ด๋ฒคํธ๋ UIEvent ๊ฐ์ฒด๋ก ์ ๋ฌ๋ฉ๋๋ค. ํฐ์น ์ด๋ฒคํธ๋ UITouch ๊ฐ์ฒด๋ก ๊ด๋ฆฌ๋๊ณ UIEvent ๊ฐ์ฒด๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ต๋๋ค. ํฐ์น ์ด๋ฒคํธ ๊ฐ์ฒด๋ ํฐ์น๋ ์๊ฐ, ํฐ์น๋ ์์ญ, ํฐ์น ๊ฐ๋, ํฐ์น ์์น ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
54. UIControl์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ๊น์ง์ ๊ณผ์ ์ ์ค๋ช ํด์ฃผ์ธ์.
- UIControl์ addTarget ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ target๊ณผ action์ ์ธ์๋ก ์ ๋ฌํ ์ ์์ต๋๋ค. target์ ์ด๋ค ๊ฐ์ฒด์ด๋์ง ๋ค์ด๊ฐ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ ํฉ๋๋ค. ๋ง์ฝ target์ nil์ด ๋ค์ด๊ฐ๋ฉด UIControl์ ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํ๊ณ ์๋ ๋ฆฌ์คํฐ๋๋ฅผ ๋ฆฌ์คํฐ๋ ์ฒด์ธ์ ํตํด ์ฐพ์๋ ๋๋ค.
- action์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ๋ฉ์๋์ ๋ํ ์๊ทธ๋์ฒ๋ฅผ ๋ํ๋ ๋๋ค. ๋ง์ฝ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด UIControl ๊ฐ์ฒด๋ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ UIApplication์ด ํธ์ถ ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ฆฌ์คํฐ๋ ์ฒด์ธ์์ ์ด ๋ฉ์๋๋ฅผ ์ฐพ์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํฉ๋๋ค. @IBAction์ด ์ด๋ฐ ๋ฉ์๋๋ฅผ ์๋ณํ ์ ์๋๋ก ํฉ๋๋ค.
- UI๋ ๋ณ๊ฒฝ์ ํธ๋ฆฌ๊ฑฐํ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์๋ง์ ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์๋๋ผ ๋ฐ๋ฃจํ์ ํ ์ฌ์ดํด ๋์ ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ง์ฝ ์ฌ๋ฌ ์ค๋ ๋์์ UI์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐ๋ฃจํ์์ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋๊ณ , ๋ทฐ๊ฐ ํ๋ฉด์ ๊ทธ๋ ค์ง๋ ์์ ์ด ์ ๊ฐ๊ฐ์ด ๋๊ฑฐ๋ ๋ ์ด์์์ ๋ํ ๊ณ์ฐ์ด ์๋ํ๋ ๊ฒ๊ณผ ๋ค๋ฅผ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- UIViewController๋ UIResponder๋ฅผ ์์ํ๊ณ , UIResponder๋ NSObject๋ฅผ ์์ํฉ๋๋ค.
- UIResponder๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ณ ๋ฆฌ์คํฐ๋ ์ฒด์ธ์ ๊ตฌ์ฑํ ์ ์๊ฒ ํฉ๋๋ค. NSObject๋ Objective-C์ ๋ฃจํธ ํด๋์ค๋ก NSObject๋ฅผ ์์ํด Objective-C ๋ฐํ์์ ๋ํ ์ธํฐํ์ด์ค๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
- main ํจ์๊ฐ ์คํ๋ฉ๋๋ค.
- main ํจ์๋ UIApplicationMain ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
- UIApplicationMain์ UIApplication ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ Info.plist์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํฉ๋๋ค. main Nib ํ์ผ์ ์ฌ๊ธฐ์ ์ฐพ์ ๋ก๋ํฉ๋๋ค.
- UIApplication์ AppDelegate ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ UIApplication์ ์์ํฉ๋๋ค.
- UIApplication์ RunLoop๋ฅผ ์์ฑํฉ๋๋ค.
- ์ค๋น๊ฐ ์๋ฃ๋๋ฉด AppDelegate์ didFinishlaunchingWithOptions๋ฅผ ํธ์ถํฉ๋๋ค.
- ์ธ์ ์ ๋ํ ์ค์ ์ด ์๋ฃ๋๋ฉด SceneDelegate์ willConnectToSession์ด ํธ์ถ๋ฉ๋๋ค.