Deep_Dev
article thumbnail

๐Ÿ’ก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

 

โ˜๐Ÿป ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ๋ฃจํŠธ ๋ทฐ ํ˜น์€ ๊ทธ ์•„๋ž˜์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. ๋ฃจํŠธ ๋ทฐ ์—†์ด ๊ณง๋ฐ”๋กœ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์— ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋Š” ์—†๋‹ค.