์ƒˆ์†Œ์‹

๐Ÿ“ฑ iOS/-- UIKit

(iOS) iOS์•ฑ์˜ ๊ตฌ์กฐ์™€ ์•ฑ์˜ ์‹คํ–‰๊ณผ์ •, ์ดˆ๊ธฐํ™” ๊ณผ์ •

  • -

iOS ์•ฑ์˜ ๊ตฌ์กฐ

iOS์•ฑ์€ ์‚ฌ์šฉ์ž ์ •์˜ ์ฝ”๋“œ, ์‹œ์Šคํ…œ ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ„์— ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

  • ์‚ฌ์šฉ์ž ์ •์˜ ์ฝ”๋“œ (Custom code) : ์›ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ UI๋ฅผ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‹œ์Šคํ…œ ํ”„๋ ˆ์ž„์›Œํฌ (System Framework) : ํŽธ์ง‘ํ•  ์ˆ˜ ์—†๋Š” ๋ถ€๋ถ„. (iOS๊ธฐ๋ฐ˜์˜ ์•ฑ์ด ์‹คํ–‰๋˜๋Š” ๋ฐ์— ํ•„์š”ํ•œ ๊ธฐ๋ฐ˜ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.)

 

iOS ์•ฑ์˜ ์‹คํ–‰ ๊ณผ์ • (Object-C ๊ธฐ๋ฐ˜์ผ๋•Œ)

C์–ธ์–ด์— ๋ฟŒ๋ฆฌ๋ฅผ ๋‘” ๋ชจ๋“  ์•ฑ์€ main() ํ•จ์ˆ˜๋กœ ์‹œ์ž‘๋œ๋‹ค (Entry Point) iOS์•ฑ๋„ Object-C ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ํ•˜์ง€๋งŒ iOS ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด main()ํ•จ์ˆ˜๋Š” ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋ฉฐ, ์ด๋Š” ๊ฑด๋“œ๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

Main.m

main()ํ•จ์ˆ˜๋Š” main.m ํŒŒ์ผ์•ˆ์— ์ƒ์„ฑ๋œ๋‹ค.

int main(int argc, char *argv[]) {
 @autoreleasepool {
  return UIApplicationMain(argc, argv, nil,
   NSStringFromClass([AppDelegate class]));
 } 
}

 

๋ฉ”์ธํ•จ์ˆ˜์˜ ๋™์ž‘

 

  1. ์•ฑ์ด ์‹คํ–‰๋˜๋ฉด์„œ ๋งจ ์ฒ˜์Œ main()ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  2. main()ํ•จ์ˆ˜๋Š” UIApplicationMain()ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  3. UIApplicationMain()ํ•จ์ˆ˜๋Š” UIApplication๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๊ฐ์ฒด๋Š” ์•ฑ์˜ ๋ณธ์ฒด์— ํ•ด๋‹น๋œ๋‹ค.
  4. UIApplication๊ฐ์ฒด๋Š” info.plist ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์•ฑ ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๋กœ๋“œํ•œ๋‹ค.
  5. ์ด๋ฒคํŠธ ๋ฃจํ”„ ๋ฐ ์ดˆ๊ธฐ์„ค์ •์„ ์ง„ํ–‰ํ•œ๋‹ค.
  6. ์‹คํ–‰ ์™„๋ฃŒ ์ง์ „์— ์•ฑ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ์˜ application(_:didFinishLaunchingWithOptions:)๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

 

  • UIApplicationMain()ํ•จ์ˆ˜๋Š” iOS์•ฑ ๋ถ€๋ถ„์˜ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ๊ฐ€ ๋œ๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ํ•ธ๋“ค๋ง, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ปค์Šคํ…€ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœ, ์•ฑ ์ƒ์„ฑ ์ดˆ๊ธฐ์„ค์ •์„ ๊ตฌํ˜„ํ•œ๋‹ค.
import UIKit
UIApplicationMain(
CommandLine.argc, CommandLine.unsafeArgv, nil,
            NSStringFromClass(AppDelegate.self)
)
  • ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด์ธ UIApplication์€ ์•ฑ์˜ ๋ณธ์ฒด๊ฐ€ ๋œ๋‹ค. ์ปค์Šคํ…€ ์ฝ”๋“œ๋“ค, ์ด๋ฒคํŠธ ๋ฃจํ”„, ํ‘ธ์‹œ ๋“ฑ... ์•ฑ์˜ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ๋‘ ํฌํ•จํ•œ ์ƒ์œ„๊ฐ์ฒด๊ฐ€ UIApplication์ด๋‹ค. UIApplcation์€ AppDelegate์—๊ฒŒ ๊ถŒํ•œ์„ ์œ„์ž„ํ•˜์—ฌ ์ปค์Šคํ…€์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
}

 

 

iOS ์•ฑ์˜ ์‹คํ–‰ ๊ณผ์ • (Swift ๊ธฐ๋ฐ˜์ผ๋•Œ)

์Šค์œ„ํ”„ํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์—๋Š” main.mํŒŒ์ผ๋„ ์—†๊ณ , ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ๋„ ์—†๋‹ค.

AppDelegate.swift ํŒŒ์ผ์„ ๋ณด๋ฉด @main ์ด๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜ ํ‘œ๊ธฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์–ด๋…ธํ…Œ์ด์…˜์ด ํ‘œ์‹œ๋œ ํด๋ž˜์Šค๊ฐ€ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋กœ ์ง€์ •๋œ๋‹ค. ์ด ํ‘œ๊ธฐ๋ฅผ ํ†ตํ•˜์—ฌ ์œ„์—์„œ ๋งํ•œ ๋ฉ”์ธํ•จ์ˆ˜๋™์ž‘์˜ 1~5๋ฒˆ์„ ๋Œ€์ฒดํ•œ๋‹ค. ์ดํ›„์˜ ๊ณผ์ •์€ ๊ฐ™๋‹ค.

์ฆ‰, ๋”ฐ๋ผ์„œ ์Šค์œ„ํ”„ํŠธ ๊ธฐ๋ฐ˜์ด๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.

 

  1. @main์–ด๋…ธํ…Œ์ด์…˜์„ ์ฐพ๊ณ , ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  2. ์ปคํŠธํ…€ ์ฝ”๋“œ์—์„œ๋Š” AppDelegateํด๋ž˜์Šค์˜ application(_:didFinishLaunchingWithOptions:)๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  3. (์•ฑ์ด ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.)
  4. ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ, ์ž‘์„ฑํ•œ ์ปค์Šคํ…€ ์ฝ”๋“œ๋“ค์ด ์‹คํ–‰๋œ๋‹ค.
  5. ์•ฑ์ด ์ข…๋ฃŒ๋ ๋•Œ, ์•ฑ์—๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ œ๊ฑฐ๋ฅผ ์œ„ํ•˜์—ฌ applicationWillTerminate(_:)๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. (์•ฑ์ด ์ข…๋ฃŒ๋˜๋Š” ์‹œ์ ์— ์ฒ˜๋ฆฌํ•ด์•„ํ•  ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค)
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.