UserDefaults์™€ Sandbox System

journey๐Ÿ“ธยท2023๋…„ 7์›” 30์ผ
0

iOS STUDY

๋ชฉ๋ก ๋ณด๊ธฐ
3/3



๐Ÿ’ก UserDefaults

์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ์— ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.
์• ํ”Œ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์ €์žฅ์†Œ๋กœ ๋”•์…”๋„ˆ๋ฆฌ์™€ ๋น„์Šทํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  .plist ํŒŒ์ผ์— ์ €์žฅ์ด ๋œ๋‹ค.
plist ํŒŒ์ผ์€ Sandbox ๋‚ด์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ์„ ๊บผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋˜๊ณ , ์•ฑ์„ ์‚ญ์ œํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๊ฑฐ๊ฐ€ ๋œ๋‹ค.

UserDefaults๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋‚˜ ์‚ฌ์šฉ์ž ์ •๋ณด์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ณด๋‹ค๋Š”
์ž๋™๋กœ๊ทธ์ธ ์—ฌ๋ถ€, ์•Œ๋ฆผ ์„ค์ • ์—ฌ๋ถ€, ์ธ์•ฑ ๊ฒฐ์ œ ์—ฌ๋ถ€, ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ์ž ๊ธฐ๋ณธ ์„ค์ • ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

๐Ÿ’ก App Sandbox

โœ… Sandbox๋ž€?

App Sandbox๋Š” ๋ณดํ˜ธ๋œ ์˜์—ญ ์•ˆ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘๋™์‹œํ‚ค๋Š” ๋ณด์•ˆ ๋ชจ๋ธ์ด๋‹ค.
์ปค๋„ ๋ ˆ๋ฒจ์—์„œ ์•ฑ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๊ธฐ์ˆ ๋กœ iOS ์•ฑ๋“ค์€ sandbox ๋ชจ๋ธ์„ ๋”ฐ๋ฅธ๋‹ค.

App Sandbox๋Š” ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์•ฑ์˜ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜์—ฌ ์™ธ๋ถ€ ๊ณต๊ฒฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์•ฑ์ด ์†์ƒ๋œ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ๊ณผ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ ํ”ผํ•ด๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋ณดํ˜ธํ•œ๋‹ค.

์•ฑ๋งˆ๋‹ค ๋ณ„๋„์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๋‹ค๋ฅธ ์•ฑ ๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณต์œ ๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ , ์•ฑ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•ด์•ผํ•  ๋•Œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์–ป๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์†Œํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์˜ ํ”ผํ•ด๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

โœ… Sandbox์˜ ์ ์šฉ

Sandbox๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์•ฑ์—์„œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๋ณด์•ˆ์— ํ—ˆ์ ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.
์•ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ '์•ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ—ˆ์šฉ'๊ด€๋ จ Alert์ฐฝ์ด ๋„์›Œ sandbox์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์š”์ฒญํ•œ๋‹ค.

=> ์•ฑ์ด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋‚˜ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค์— ๋งˆ์Œ๋Œ€๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐœ๋ฐœ์ž ๋˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ‘๊ทผ ๊ถŒํ•œ์„ ํ™•์ธ ๋ฐ›์€ ์˜์—ญ ๋งŒํผ๋งŒ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์ด iOS์˜ ๋ณด์•ˆ ๊ธฐ์ˆ ์ด ์ข‹๋‹ค๊ณ  ๋งํ•˜๋Š” ์ด์œ ์ด๋‹ค.

โœ… App Sandbox์˜ ์›์น™

ํ”„๋กœ์ ํŠธ ์ •์˜์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญ๋˜์ง€ ์•Š์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ ๋Ÿฐํƒ€์ž„ ์‹œ ์‹œ์Šคํ…œ์— ์˜ํ•ด ๊ฑฐ์ ˆ๋œ๋‹ค.

AppStore์— ์ถœ์‹œํ•˜๋Š” ์•ฑ์€ App Sandbox ๊ธฐ์ˆ ์ด ์ ์šฉ๋˜์–ด์•ผํ•˜๊ณ , App Sandbox๊ฐ€ ์ ์šฉ๋œ ์•ฑ์€ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ์ ์œผ๋กœ ์–ด๋– ํ•œ ๋ฆฌ์†Œ์Šค์— ์–ด๋–ค ๋ชฉ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋ ค๋Š” ๊ฒƒ์ธ์ง€ ์•Œ๋ ค์•ผ ํ•œ๋‹ค.

๋ฆฌ์†Œ์Šค ๋ชฉ๋ก

  • ํ•˜๋“œ์›จ์–ด (์นด๋ฉ”๋ผ, ๋งˆ์ดํฌ, ํ”„๋ฆฐํ„ฐ)
  • ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์š”์ฒญ (์š”์ฒญ, ์‘๋‹ต)
  • ์•ฑ ๋ฐ์ดํ„ฐ (์บ˜๋ฆฐ๋”, ์—ฐ๋ฝ์ฒ˜, ์œ„์น˜)
  • ์œ ์ € ๋ฐ์ดํ„ฐ (Downloads, User Selected Files)

โœ… App Sandbox์˜ ๊ตฌ์กฐ

์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํŒŒ์ผ์ด ์–ด๋””์— ์ €์žฅ๋˜๋Š”์ง€ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•œ๋‹ค.

์•ฑ์ด ์ฒ˜์Œ ์„ค์น˜๋  ๋•Œ ์•ฑ์˜ Sandbox Directory ์•ˆ์— container directory๋ฅผ ๋งŒ๋“ ๋‹ค.

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


์•ฑ์„ ์„ค์น˜ํ•˜๋Š” ์‹œ์ ์— ์•ฑ์€ ๊ฐ๊ฐ์˜ Sandbox Directory์— ์œ„์น˜ํ•˜๋ฉฐ, ์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๊ฐ ์•ฑ์˜ home directory๊ฐ€ ๋œ๋‹ค.
์•ฑ๊ณผ ์‹œ์Šคํ…œ์˜ ์ƒํ˜ธ์ž‘์šฉ์€ ์•ฑ์˜ Sandbox Directory ๋‚ด์— ์œ„์น˜ํ•œ directory๋กœ ์ œํ•œ๋œ๋‹ค.

Sandbox ๋‚ด์—๋Š” ์—ฌ๋Ÿฌ ์—ญํ• ์„ ๊ฐ€์ง„ Container Directory๊ฐ€ ์žˆ๋‹ค.

Bundle Container

์•ฑ์˜ ๋ฒˆ๋“ค(์‹คํ–‰ํŒŒ์ผ)์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‹ค.

Data Container

Data Container ๋‚ด์— Documents, Library, Temp, System Data ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • Documents: ์•ฑ์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๋ฌธ์„œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž์™€ ์‚ฌ์šฉ์ž ๋ชจ๋‘๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•œ๋‹ค๋ฉด ํŠน์ • ๋ถ€๋ถ„์—์„œ ์ ‘๊ทผ ์ œํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Library: ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ ์ž„์‹œ ํŒŒ์ผ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•œ๋‹ค. ์™ธ๋ถ€๋กœ ๋…ธ์ถœ๋˜๋ฉด ์•ˆ๋˜๋Š” ํŒŒ์ผ์„ ๋ณด๊ด€ํ•œ๋‹ค. Library์— UserDefaults ๋ฐ์ดํ„ฐ๋„ ์ €์žฅ๋œ๋‹ค.

  • temp: ์ž„์‹œ ํŒŒ์ผ ์ €์žฅ ๊ณต๊ฐ„

iCloud Container

๋Ÿฐํƒ€์ž„ ์‹œ ์ ‘๊ทผ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.


UserDefaults ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ์ €์žฅ๋ ๊นŒ? ๋ผ๋Š” ์งˆ๋ฌธ์œผ๋กœ ์ด๊ฒƒ์ €๊ฒƒ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. UserDefaults ๋ฐ์ดํ„ฐ๋Š” Sandbox ๋‚ด์— Data Container ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

iOS ์•ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์žˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ๋‹ค๋ฅธ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ๋„ ๊ณต๋ถ€ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

profile
https://iwntberich.tistory.com/

0๊ฐœ์˜ ๋Œ“๊ธ€