๐กiOS ์ฑ์ ๊ตฌ์กฐ
๐ ๊ฐ๋ฐ๊ด์ ์์ ๋ณด๋ iOS ์ฑ์ ๊ตฌ์กฐ
- Custom Code : ๊ฑด๋๋ฆด ์ ์๋ ์์ญ
- System Framework : ๊ฑด๋๋ฆด ์ ์๋ ์์ญ
UIApplicationMain() : iOS ์ฑ์ ์ํ๋ ๋ถ๋ถ์ ์ํธ๋ฆฌ ํฌ์ธํธ
- ์ฑ์ ํต์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํ๋ก์ธ์ค๋ฅผ ํธ๋ค๋งํ๊ณ , ์คํ ๋ฆฌ๋ณด๋ ํ์ผ๋ก๋ถํฐ ์ฑ์ ์ ์ ์ธํฐํ์ด์ค๋ฅผ ์ฝ์ด๋ค์ผ๋ฟ๋ง ์๋๋ผ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ปค์คํ ์ฝ๋๋ฅผ ํธ์ถํด ์ค์ผ๋ก์จ ์ฑ ์์ฑ ์ด๊ธฐ์ ํ์ํ ์ค์ ์ ๊ตฌํํ ์ ์๊ฒ ํด์ค๋ค.
AppDelegate : ๊ฐ์ฒด๋ฅผ ๋ด์ธ์ฐ๊ณ ์ปค์คํ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ฝ๊ฐ์ ๊ถํ ๋ถ์ฌ
- UIApplication์ผ๋ก๋ถํฐ ์์๋ฐ์ ์ผ๋ถ ๊ถํ์ ์ด์ฉํ์ฌ ์ปค์คํ ์ฝ๋์ ์ํธ์์ฉํ๋ ์ญํ ์ ๋ด๋นํ๊ณ , ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๊ฐ ํ์ํ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์๋๋ก ๋์์ค๋ค.
- ์ฑ ์ ์ฒด์ ์๋ช ์ฃผ๊ธฐ์ ํจ๊ปํ๋ค.
๐ UIApplication๊ฐ์ฒด์ AppDelegate๊ฐ์ฒด๊ฐ ์ฐ๊ด๋์ด ์ฑ์ด ์คํ๋๋ ์ ์ฒด๊ณผ์
1. main()ํจ์ ์คํ
2. main()ํจ์๋ ๋ค์ UIApplicationMain() ํจ์ ํธ์ถ
3. UIApplicationMain() ํจ์๋ ์ฑ์ ๋ณธ์ฒด์ ํด๋นํ๋ UIApplication ๊ฐ์ฒด ์์ฑ
4. UIApplication ๊ฐ์ฒด๋ Info.plist ํ์ผ์ ๋ฐํ์ผ๋ก ์ฑ์ ํ์ํ ๋ฐ์ดํฐ์ ๊ฐ์ฒด๋ฅผ ๋ก๋ํ๋ค.
5. AppDelegate ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ UIApplication ๊ฐ์ฒด์ ์ฐ๊ฒฐํ๋ค.
6. ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ๋ง๋๋ ๋ฑ ์คํ์ ํ์ํ ์ค๋น๋ฅผ ์งํํ๋ค.
7. ์คํ ์๋ฃ ์ง์ , ์ฑ ๋ธ๋ฆฌ๊ฒ์ดํธ์ appliation(_ :didFinishLaunchingWithOptions:)๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
๐ MVC ํจํด
๋ชจ๋ธ(Model) : ๋ฐ์ดํฐ ๋ด๋น
๋ทฐ(View) : ๋ฐ์ดํฐ์ ๋ํ ํ๋ฉด ํํ ๋ด๋น
์ปจํธ๋กค๋ฌ(Controller) : ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์์นํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ๋ทฐ๋ก ์ ๋ฌํ๊ณ , ๋ทฐ์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ฒ๋ฆฌ
์ฅ์
- ๋ฐ์ดํฐ์ ๋น์ง๋์ค ๋ก์ง์ ์๊ฐ์ ์ธ ํํ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌํด ์ค์ผ๋ก์จ ํ๋ฉด์ ์ ๊ฒฝ์ฐ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ ๋น์ง๋์ค ๋ก์ง์ ์์ฑ
- ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ถ๋ถ์ ์์ ํด๋ ๋น์ง๋์ค ๋ก์ง์ด๋ ํ๋ฉด ํํ ์ฝ๋์๋ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ , ํ๋ฉด์ ํํํ๋ ์ฝ๋๋ฅผ ์์ ํ๋๋ผ๋ ๋น์ง๋์ค ๋ก์ง์ด๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น์ง ์์ผ๋ฏ๋ก ํจ์ฌ ๋ ํ๋ก๊ทธ๋จ์ด ์ ์ฐํด์ง๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
๐ iOS ๋ผ์ดํ ์ฌ์ดํด
1. Not Running : ์ฑ์ด ์์๋์ง ์์๊ฑฐ๋, ์คํ๋์์ง๋ง ์์คํ ์ ์ํด ์ข ๋ฃ๋ ์ํ
2. Inactive : ์ฑ์ด ์ ๋ฉด์์ ์คํ์ค์ด์ง๋ง, ์๋ฌด๋ฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ง์๊ณ ์๋ ์ํ
3. Active : ์ฑ์ด ์ ๋ฉด์์ ์คํ์ค์ด๋ฉฐ, ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ณ ์๋ ์ํ
4. Background : ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ง๋ง ์ฌ์ ํ ์ฝ๋๊ฐ ์คํ๋๊ณ ์๋ ์ํ.
๋๋ถ๋ถ์ ์ฑ์ Suspended ์ํ๋ก ์ดํํ๋ ๋์ค์ ์ผ์์ ์ผ๋ก ์ด์ํ์ ์ง์ ํ์ง๋ง, ํ์ผ ๋ค์ด๋ก๋๋ ์ ๋ก๋, ์ฐ์ฐ ์ฒ๋ฆฌ ๋ฑ ์ฌ๋ถ์ ์คํ ์๊ฐ์ด ํ์ํ ์ฑ์ผ ๊ฒฝ์ฐ ํน์ ์๊ฐ ๋์ ์ด ์ํ๋ก ๋จ์ ์๊ฒ ๋๋ ๊ฒฝ์ฐ๋ ์๋ค.
5. Suspended : ์ฑ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง๋์ง๋ง ์คํ๋๋ ์ฝ๋๊ฐ ์๋ ์ํ.
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ์ํฉ์ด ์ค๋ฉด iOS ์์คํ ์ ํฌ๊ทธ๋ผ์ด๋์ ์๋ ์ฑ์ ์ฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํ๊ธฐ ์ํด Suspended ์ํ์ ์๋ ์ฑ๋ค์ ํน๋ณํ ์๋ฆผ ์์ด ์ ๋ฆฌํ๋ค.
๐ก iOS์ ์ฝ์ฝ์ ํฐ์น ํ๋ ์์ํฌ
๐ ์ฝ์ฝ์ ํฐ์น ํ๋ ์ ์ํฌ
: ํ๋์จ์ด์ ์ฑ ์ฌ์ด๋ฅผ ์ค๊ณํด์ฃผ๋ iOS์ธํฐํ์ด์ค
UIApplication, UIButton ๋ฑ์ ์ค์ํํธ ์ธ์ด ์์ฒด์์ ์ ๊ณตํ๋ ํด๋์ค๊ฐ ์๋, ํ๋ ์์ํฌ๋ฅผ ํตํด ์ ๊ณต๋๋ ํด๋์ค
- import UIKit : ์ ์ ์ธํฐํ์ด์ค ์ ๊ณต
- import Foundation : ๋คํธ์ํฌ๋ ๋ ์ง ์ฐ์ฐ ๋ฑ์ ๊ธฐ๋ฅ ์ฒ๋ฆฌ
- import WebKit : ์น๊ณผ ๊ด๋ จ๋ ๊ธฐ์ ๊ตฌํ
- import AddressBookUI : ์ฃผ์๋ก ํ๋ฉด ๊ด๋ จ ๊ธฐ๋ฅ
- import UserNotifications : ์ฌ์ฉ์ ์๋ฆผ
- ... ๊ธฐํ ๋ฑ๋ฑ
- ํ์ด๋ฐ์ด์ ํ๋ ์์ํฌ๋ UIKit ํ๋ ์์ํฌ ๋ฑ์ ๊ณ์ธต์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด ์ฝ์ฝ์ํฐ์น๋ผ๋ ๊ฑฐ๋ํ ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅ
โ๐ป ํต์ฌ
Foundation Framework : ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์, ์ปฌ๋ ์ ๋ฐ ์ฑ์ ๊ธฐ๋ณธ ๊ฐ์ฒด์ ๊ธฐ๋ฐ ๊ธฐ์ ์ ์ ๊ณต
UIKit Framework : ์ ์ ์ธํฐํ์ด์ค ๋๊ตฌ๋ฅผ ํตํด iOS ์ฑ์ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ ์ ๊ณต
---> iOS ์ฑ์ผ๋ก์์ ํน์ง์ ์ธ ๋ถ๋ถ์ UIKit ํ๋ ์์ํฌ๊ฐ, ๋ด๋ถ์ ์ผ๋ก ๋์๊ฐ๋ ๊ธฐ๋ฅ์ Foundation Framework ๊ฐ ์ฒ๋ฆฌ
๐ก ์ฑ์ ๊ตฌ์ฑํ๋ ํต์ฌ ๊ฐ์ฒด๋ค
๐ iOS ์ ์ ์ธํฐํ์ด์ค์ ํํ ๊ตฌ์กฐ
๋ทฐ : ์ฝํ ์ธ ๋ฅผ ๋ด์ ์ด๋ฅผ ์คํฌ๋ฆฐ์์ ํ์ํ๊ณ , ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์
iOS์์ ์คํ๋๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ํ ํ๋ ์ด์์ ์๋์ฐ์ ๋ทฐ๋ฅผ ๊ฐ์ง๋ค.
์๋์ฐ์ ๋ทฐ ์ฌ์ด๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ํตํด ์ฐ๊ฒฐ๋๋ค.
๐ ๋ทฐ ์ปจํธ๋กค๋ฌ ( View Controller )
์ฑ์ ๊ทผ๊ฐ์ ์ด๋ฃจ๋ ๊ฐ์ฒด๋ก, ๋ชจ๋ ์ฑ์ ์ต์ํ ํ๋ ์ด์์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ก ๊ตฌ์ฑ๋๋ค.
ํ๋ฉด ๊ตฌ์ฑ ์์๋ค, ์ฆ ๋ทฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด์ง๋ง, ๋จ์ํ ์ฌ๊ธฐ์ ๊ทธ์น์ง ์๊ณ ํ๋ฉด๊ณผ ๋ฐ์ดํฐ ์ฌ์ด์ ์ํธ ์์ฉ๊น์ง ๊ด๋ฆฌํ๊ธฐ๋ ํ๋ค.
- View Controller
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ์ปจํธ๋กค๋ฌ
- UIViewController ์์
- Navigation Controller
- ์ปจํธ๋กค๋ฌ๋ผ๋ฆฌ์ ํ๋ฉด์ด๋์ ์ฒ๋ฆฌํด์ฃผ๊ณ , ํ์ฌ์ ํ์ด์ง ์์น์ ๋ํ ๋ค๋น๊ฒ์ด์ ์ญํ
- UINavigationController ์์
- Table View Controller
- ๋ด๋ถ์ ๋ฆฌ์คํธ ํ์์ ํ ์ด๋ธ ๋ทฐ๋ฅผ ํฌํจํ๊ณ ์์ด ์ฌ๋ฌ ํญ๋ชฉ์ด๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๋์ดํ๊ธฐ ์ํด ์ฌ์ฉ
- UITableViewController ์์
- Tab bar Controller
- ํ๋ฉด์ ๋ํ๋ด๋ ์ฌ๋ฌ๊ฐ์ ํญ์ด ์๊ณ , ํญ์ ํฐ์นํ๋ฉด ํ๋ฉด์ด ์ ํ๋๋ ํํ
- UITabbarController ์์
- Split View Controller
- ๋ฉ์ธ - ์๋ธ ํ๋ฉด ๋ถํ ์ฉ ์ปจํธ๋กค๋ฌ
- UISplitViewController
โ๐ป ์ฐ๋ฆฌ๋ ํญ์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋ฃจํธ ๋ทฐ ํน์ ๊ทธ ์๋์ ์ถ๊ฐํด์ผ ํ๋ค. ๋ฃจํธ ๋ทฐ ์์ด ๊ณง๋ฐ๋ก ๋ทฐ ์ปจํธ๋กค๋ฌ์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ ์๋ ์๋ค.
'๐ iOS > UIKit' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] reloadData ๊ฐ์ ๋ฐ ์ฐธ๊ณ ์ฌํญ (0) | 2023.03.25 |
---|---|
[iOS] ํญ๋ฐ - UITabBarController (0) | 2023.03.25 |
[iOS] UI Switch (0) | 2023.03.25 |
[iOS] Modal dismiss ์ดํ reloadData() ํ๊ธฐ (0) | 2023.03.21 |
[Swift][UIKit] iOS์ ์์ (0) | 2022.12.25 |