Skip to content

Latest commit

ย 

History

History
82 lines (49 loc) ยท 5.07 KB

AppBundle.md

File metadata and controls

82 lines (49 loc) ยท 5.07 KB

App Bundle์˜ ๊ตฌ์กฐ์™€ ์—ญํ• ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

์ฐธ๊ณ ํ•œ ์ข‹์€ ๊ธ€

Answer

Application Bundle: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์œ ํ˜•์˜ ๋ฒˆ๋“ค


๋ฒˆ๋“ค์ด ๋ญ˜๊นŒ?

Bundle ๊ณผ Package

  • Package - Finder๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹จ์ผ ํŒŒ์ผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ

    Package๋Š” macOS์—์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. Package๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด์ง€๋งŒ, Finder์—์„œ๋Š” ์ด๋ฅผ ๋‹จ์ผํ•œ ํŒŒ์ผ๋กœ ์ธ์‹ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋ฐ˜์ ์ธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ Finder์—์„œ ๋”๋ธ” ํด๋ฆญํ•˜์—ฌ ์—ด๋ฉด ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์œผ๋กœ ์ด๋™ํ•˜์ง€๋งŒ, Package๋Š” ํŒŒ์ผ์ด ์‹คํ–‰๋œ๋‹ค.

    image

    Finder์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํƒญ์œผ๋กœ ์ด๋™ํ•œ ํ›„ ์•„๋ฌด ์•ฑ ์•„์ด์ฝ˜์„ ์˜ค๋ฅธ์ชฝ ํด๋ฆญ์œผ๋กœ ํ™•์ธํ•˜๋ฉด ๋†€๋ž๊ฒŒ๋„ ํŒจํ‚ค์ง€ ๋‚ด์šฉ ๋ณด๊ธฐ ์˜ต์…˜์ด ์กด์žฌํ•œ๋‹ค. ์ด๋Š” App๋„ Package์˜ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ž„์„ ์˜๋ฏธํ•œ๋‹ค. MacOS์—์„œ๋Š” ํ•˜๋‚˜์˜ Application์„ .app์ด๋ผ๋Š” ํ™•์žฅ์ž๊ฐ€ ๋ถ™๋Š” Package๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ์‹œ์Šคํ…œ(Finder)์€ .app, .bundle, .framework, .plugin ์™€ ๊ฐ™์€ ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ Package๋กœ ์ธ์‹ํ•œ๋‹ค.


  • Bundle - ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์™€ ์ฝ”๋“œ์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง„ ๋””๋ ‰ํ† ๋ฆฌ

    Bundle์€ Package์ฒ˜๋Ÿผ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ•œ ์ข…๋ฅ˜๋ฅผ ์ง€์นญํ•˜์ง€๋งŒ, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ด๋‹ค. ๋งŽ์€ Bundle์ด Package์ด๊ธฐ๋„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Bundle๊ณผ Package ๊ฐœ๋…์„ ์„œ๋กœ ํ˜ผ์šฉํ•ด์„œ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. application ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” Finder์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹จ์ผํ•œ ํŒŒ์ผ๋กœ ๋…ธ์ถœ๋˜๋Š” Package์ด๋ฉด์„œ, ์‹คํ–‰ ์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ Bundle์ด๊ธฐ๋„ ํ•œ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๋‹ค.

    Bundle์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ์ด๋ฆ„๊ณผ ์‹ค์ œ Bundle์ด ์‚ฌ์šฉํ•˜๋Š” File System์˜ ์ด๋ฆ„์„ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Finder์—์„œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ Display Name๋งŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


์•ž์„œ ๋งํ–ˆ๋“ฏ ์•ฑ์€ ํŒจํ‚ค์ง€์ด๋ฉด์„œ ๋ฒˆ๋“ค์ด๊ธฐ๋„ ํ•œ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๋‹ค.
์ด๋ฅผ ํ† ๋Œ€๋กœ App Bundle์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋ฉด, App Bundle์€ ์ƒŒ๋“œ๋ฐ•์Šค ๊ตฌ์กฐ์—์„œ Bundle Container๋กœ ์•ฑ์˜ ์‹คํ–‰ ์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•˜๋‚˜์˜ ๊ณต๊ฐ„์— ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์ €์žฅํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ƒŒ๋“œ๋ฐ•์Šค๋ž€, ๋ณดํ˜ธ๋œ ์˜์—ญ ๋‚ด์—์„œ๋งŒ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘์‹œํ‚ค๋Š” ๊ฒƒ์œผ๋กœ ์–ด๋ฆฐ์•„์ด๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ƒŒ๋“œ๋ฐ•์Šค ๋‚ด์—์„œ๋งŒ ๋†€๋„๋ก ํ•˜๋Š” ์˜๋ฏธ์—์„œ ์œ ๋ž˜๋œ ๋ณด์•ˆ ๋ชจ๋ธ์ด๋‹ค.

์ฐธ๊ณ ๋งํฌ 1๋ฒˆ์„ ์ฐธ๊ณ ํ•˜๋ฉด ๋” ์ž์„ธํ•œ ์„ค๋ช…์ด ์žˆ๋‹ค.

๋งŒ์•ฝ ์ƒŒ๋“œ๋ฐ•์Šค๋กœ ์•ฑ์„ ๊ฐ์‹ธ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•ฑ์€ ์ž์‹ ์„ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ–๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ๋™์ผํ•˜๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ, ์•ฑ์ด๋‚˜ ์—ฐ๊ฒฐ๋œ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋ณด์•ˆ์  ๊ฒฐํ•จ์ด ์žˆ์„ ๋•Œ ์ด๋ฅผ ์•…์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ์ด๋Ÿฌํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด iOS๋Š” ์•ฑ์ด ๋ชจ๋‘ SandBoxํ™” ๋˜์–ด์žˆ๋‹ค.


์•ฑ ๋‚ด๋ถ€์— ๋ฒˆ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค. ๋ฒˆ๋“ค ๋‚ด์— ์ ‘๊ทผํ•ด์„œ ์ง์ ‘ ์ˆ˜์ •์€ ๋ถˆ๊ฐ€ํ•˜๊ณ , ์•ˆ์— ๋ฆฌ์†Œ์Šค๋“ค์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ํ—ˆ๋ฝ๋œ ์ƒํƒœ์ด๋‹ค.

open class Bundle : NSObject {
    /* Methods for creating or retrieving bundle instances. */
    open class var main: Bundle { get }
}

// Usage
Bundle.main

๋งŒ์•ฝ Xcode ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ค ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋œจ๊ฒŒ ๋˜๋Š”๋ฐ

์—ฌ๊ธฐ์„œ ํ™•์ธ์„ ๋ˆ„๋ฅด๋ฉด ์•ฑ ์ „์—ญ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ ์™ธ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋“ค์€ ๊ณต์‹๋ฌธ์„œ ํ•˜๋‹จ์„ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.

Bundle.main.url(forResource: "myImageName", withExtension: "jpg")

์ด๋ฏธ์ง€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” Xcode์—์„œ ํŠน๋ณ„ํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•˜์—ฌ, Bundle ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋ฐ”๋กœ ์ด๋ฏธ์ง€ ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ UIImage ํ˜•ํƒœ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.


์•ฑ ๋ฒˆ๋“ค(๋ฉ”์ธ ๋ฒˆ๋“ค)์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • Asset
  • ์™ธ๋ถ€์—์„œ ์ถ”๊ฐ€ํ•œ ๋ฆฌ์†Œ์Šค(ํฐํŠธ, ์ด๋ฏธ์ง€, ์‚ฌ์šด๋“œ ํŒŒ์ผ ๋“ฑ)
  • Storyboard
  • plist (InfoPlist ํฌํ•จ ๋‹ค๋ฅธ๊ฒƒ๋“ค - ์—ญ์‹œ ํ”„๋กœ์ ํŠธํด๋”๋กœ ์ง‘์–ด๋„ฃ์œผ๋‹ˆ๊นŒ)
  • ๋ฉ”์ธ nib ํŒŒ์ผ

์ถ”๊ฐ€์ ์œผ๋กœ, Bundle์„ ์ด์šฉํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ด์ „ํ•  ๋•Œ ๋‹จ์ˆœํžˆ Bundle๋งŒ ์˜ฎ๊ธฐ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•จ์„ ์ œ๊ณตํ•œ๋‹ค.