Linker ์•Œ์•„๋ณด๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”?๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ Xcode Build System์— ๋Œ€ํ•œ ๊ธ€์„ ์ผ๋Š”๋ฐ,๋ง์ปค์— ๋Œ€ํ•ด ์กฐ๊ธˆ๋งŒ ๋” ์ž์„ธํžˆ ๊ณต๋ถ€ํ•ด๋ณด๋ ค ์•Œ์•„๋ณด๋˜์ค‘ WWDC22์— ๋งํ‚น์— ๋Œ€ํ•œ ์˜์ƒ์ด ์žˆ์–ด ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.๊ฐ€๋ณด์‹œ์ฃ  ๋ชฉ์  ํŒŒ์ผ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?(์‚ฌ์ „ ์ง€์‹)๋จผ์ž ์•Œ๊ณ ๊ฐ€์•ผํ•  ๋‚ด์šฉ์ด ์žˆ๋Š”๋ฐ ๋ฐ”๋กœ ๋ชฉ์  ํŒŒ์ผ ์ž…๋‹ˆ๋‹ค.๋ชฉ์  ํŒŒ์ผ์€ ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ์–ด์ƒ˜๋ธ”๋Ÿฌ์—์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ์ด๋‚˜ ์–ด์…ˆ๋ธ”ํ•ด์„œ ์ƒ์„ฑํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.์ €๋ฒˆ ํฌ์ŠคํŒ… Xcode Build System์—์„œ ํ•ด๋‹น ๋‹จ๊ณ„์—์„œ Mach-OํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ๊ทธ๊ฒŒ ๋ฐ”๋กœ ๋ชฉ์  ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Linker๋ž€? ๋ง์ปค๋Š” ๋ชฉ์ ํŒŒ์ผ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ํ•ฉ์ณ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ์—ญํ• ์„ ํ•˜๊ณ ์ด ๊ณผ์ •์„ ๋งํ‚น์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ 2๊ฐœ์˜ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Static Linking(..

iOS 2025. 1. 12. 17:05
[Xcode] Xcode Build System ์ดํ•ดํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”?๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ build ๊ด€๋ จ๋œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”.๋ชจ๋“ˆ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ธฐ ์ „์— ๋ฒ ์ด์Šค ๋‚ด์šฉ์ธ๊ฒƒ๊ฐ™์•„ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ์ฝ๊ณ  ๊ณต๋ถ€ํ•œUnderstanding Xcode Build System์„ ๋ฒˆ์—ญํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Problem Statement๋ชจ๋“  ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•˜๋“œ์›จ์–ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ธก๋ฉด์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.ํ•˜๋“œ์›จ์–ด๋Š” ๋ชจ๋‹ˆํ„ฐ๋‚˜ ํ‚ค๋ณด๋“œ์ฒ˜๋Ÿผ ์ปดํ“จํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ๋ถ€๋ถ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ํ•ด ์ œ์–ด๋˜๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ๋ช…๋ น์–ด ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์กฐ์œจํ•˜๊ณ  ํ•˜๋“œ์›จ์–ด๊ฐ€ ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๋‘˜ ์ค‘ ์–ด๋А ๊ฒƒ๋„ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ์šฐ๋ฆฌ์˜..

iOS 2025. 1. 3. 00:32
[Xcode] build configuration file(xcconfig) ์•Œ์•„๋ณด๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”?๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ €๋ฒˆ ํฌ์ŠคํŒ…์˜ ์—ฐ์žฅ์„ ์œผ๋กœ build configuration file์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.  # Build SettingsBuild Settings๋Š” ์ €๋ฒˆ ์‹œ๊ฐ„์— ๋นŒ๋“œ ์„ค์ •์€ ํŠน์ • ์ œํ’ˆ์˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ํŠน์ • ์ธก๋ฉด์ด ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธ๋กœ ์„ค๋ช…๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ €ํฌ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„ค์ • ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด์„œXcode๋ฅผ ์—ด๊ณ  Build Settings ์„น์…˜์œผ๋กœ ๊ฐ„ ๋’ค ์„ค์ •์„ ๋ฐ”๊พธ๊ณค ํ–ˆ์—ˆ์ฃ ! ๊ทธ๋Ÿฐ๋ฐ ๊ฐ’์„ ์ˆ˜์ •ํ•œ ๋’ค git ์ˆ˜์ • ๋‚ด์—ญ์„ ๋ณด๋ฉด ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.setting ๊ฐ’๋“ค์„ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ์ฝ”๋“œ ๋ฆฌ๋ทฐํ•  ๋•Œ๋‚˜ ์ˆ˜์ • ๋‚ด์—ญ์„ ์‚ดํŽด๋ณผ ๋•Œ ์ฐพ๊ธฐ ํž˜๋“ค๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.setting๊ฐ’๋“ค์€ ๋งค์šฐ ์ค‘์š”ํ•œ๋ฐ ๋ง์ด์ฃ !! ๊ทธ๋ž˜์„œ ์ด๊ฒƒ๋“ค..

iOS 2025. 1. 1. 22:58
[Xcode] Project, Target, Build Settings ๋“ฑ ๊ฐ ๊ฐœ๋… ์ •๋ฆฌ

์•ˆ๋…•ํ•˜์„ธ์š”?๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค! Xcode์—์„œ ์ €ํฌ๊ฐ€ ์ž์ฃผ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š” ์„ค์ •๊ฐ’๋“ค์ด ์žˆ๋Š”๋ฐํ•ด๋‹น ์„ค์ •๊ฐ’์— ๋Œ€ํ•ด ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.๊ณ ๋Ÿผ ๋ ˆ์ธ ๊ณ  # Project๋ž€?file, resources, ํ•˜๋‚˜ ์ด์ƒ์˜ ์ œํ’ˆ์„ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ์ œํ’ˆ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์š”์†Œ์™€ ๊ทธ ์š”์†Œ๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—๋Š” ์ œํ’ˆ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํƒ€๊ฒŸ(target)์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ”„๋กœ์ ํŠธ๋Š” ํ”„๋กœ์ ํŠธ ๋‚ด ๋ชจ๋“  ํƒ€๊ฒŸ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋นŒ๋“œ ์„ค์ •์„ ์ •์˜ํ•˜๋ฉฐ, ๊ฐ ํƒ€๊ฒŸ์€ ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ๋นŒ๋“œ ์„ค์ •์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๋“ค์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.์†Œ์Šค ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฐธ์กฐ์†Œ์Šค ์ฝ”๋“œ(ํ—ค๋” ํŒŒ์ผ๊ณผ ๊ตฌํ˜„ ํŒŒ์ผ ํฌํ•จ)..

iOS 2024. 12. 23. 22:42
[iOS] Keychain

์•ˆ๋…•ํ•˜์„ธ์š”?๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ €๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด์ด๋ฒˆ์—๋Š” keychain์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Keychain Service๋ž€?ํ‚ค์ฒด์ธ ์„œ๋น„์Šค๋Š” ํ‚ค์ฒด์ธ์ด๋ผ๋Š” ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.ํ‚ค์ฒด์ธ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์•ฑ์„ ์‚ญ์ œํ•˜๋”๋ผ๋„ ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.  ๋น„๋ฐ€๋ฒˆํ˜ธ, cryptographic keys ๋“ฑ ์‚ฌ์šฉ์ž๊ฐ€ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. Keychain Itemํ‚ค์ฒด์ธ์— ์ €์žฅํ•˜๋ ค๋ฉด ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ,๊ทธ ํ˜•ํƒœ๋ฅผ Keychain Item์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.  ์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด Data์™€ ํ•จ๊ป˜ Attributes๋„ ํ•จ๊ป˜ ์ €์žฅ ๋˜๋Š”๋ฐ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ..

iOS 2024. 11. 4. 00:22
[iOS] UserDefaults

์•ˆ๋…•ํ•˜์„ธ์š”?๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ž˜ ์•„๋Š” ์•ฑ ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ธUserDefaults์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋™์ž‘ ๋ฐฉ์‹ ์œ„์ฃผ๋กœ ํ™•์ธํ•ด๋ณผ๊ฒŒ์š”!UserDefaults ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฉฐ, key-value ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์•ฑ ์‹œ์ž‘๋•Œ๋งˆ๋‹ค ์œ ์ง€๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ง•์„ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ๋งค๋ฒˆ Database์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์บ์‹ฑํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ๋™๊ธฐ์ ์œผ๋กœ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.๊ฐ’์€ ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๋Š”๊ฐ€?UserDefaults๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ property list๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.์Šค๋ ˆ๋“œ ์„ธ์ดํ”„ ํ•˜๋ฉฐ,๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์ผ ๊ฒฝ์šฐ ๋™๊ธฐ์ ์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ,๋‹ค๋ฅธ ํ”„๋กœ์„ธ..

iOS 2024. 11. 3. 18:12
Queue๋ฅผ ์•„๋ผ๋ณด์ž!

Queue๋ž€?FIFO(First in First out) ์˜ ํŠน์„ฑ์„ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ฒ˜์Œ์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋ฐฉ์ถœ๋˜๋Š” ๊ตฌ์กฐQueue์˜ ๊ตฌ์กฐ ๋ฐ ์„ฑ๋Šฅ์›์†Œ์˜ ์‚ฝ์ž… / ์‚ญ์ œ๋˜๋Š” ์œ„์น˜๊ฐ€ ์ •ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— Restricted Structure๋ผ๊ณ ๋„ ํ•œ๋‹ค.Restricted Structure : ํŠน์ • ์œ„์น˜์—์„œ ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ์ œํ•œ์ด ๊ฑธ๋ ค์žˆ๋Š” ๊ตฌ์กฐ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์–ด ๋„ฃ๋Š” ๊ณณ์„ back / ์ง‘์–ด ๋„ฃ๋Š” ํ–‰์œ„๋ฅผ “Enqueue”๋ผ ํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๊ณณ์„ front / ๊บผ๋‚ด๋Š” ์ž‘์—…์€ “Dequeue” ์ด๋ผ๊ณ  ํ•œ๋‹ค.์‚ฝ์ž… : O(1) / ์‚ญ์ œ : O(1) / ํƒ์ƒ‰ : O(n)Queue์˜ ์ผ๋ฐ˜์  ์‚ฌ์šฉCPU Scheduling์—์„œ Task๋ฅผ ๋ฐ›์•„ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉRouter์—์„œ ์ฒ˜๋ฆฌํ•  ํŒจํ‚ท์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉQu..

Stack์„ ์•„๋ผ๋ณด์ž!

Stack ์ด๋ž€?LIFO(Last in First out) ์˜ ํŠน์„ฑ์„ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋ฐฉ์ถœ๋˜๋Š” ๊ตฌ์กฐStack์˜ ๊ตฌ์กฐ ๋ฐ ์„ฑ๋Šฅ๋ฐ์ดํ„ฐ ๋„ฃ๋Š” ์ž‘์—…์€ ๋ฐ€์–ด ๋„ฃ๋Š”๋‹ค๊ณ  ํ•˜์—ฌ “push” ๋ผ๊ณ  ํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ž‘์—…์€ “pop” ์ด๋ผ๊ณ  ํ•œ๋‹ค.Stack์ด ํ•ด๋‹น ์„ฑ๋Šฅ์ด ๋‚˜์˜ค๋Š” ์ด์œ (Array vs LinkedList)ADT๋ž€? : Abstract Data Type์œผ๋กœ ๊ธฐ๋Šฅ๋งŒ ๋ช…์„ธํ•ด ๋†“์€ ํ˜•ํƒœ์ด๋‹ค. ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค.๋ฐฐ์—ด์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ ์ €์žฅ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›์†Œ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ(O(1))๊ณ ์ •๋œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ํฌ๊ธฐ ๋ณ€๊ฒฝ์ด ์–ด๋ ต๋‹ค.์›์†Œ๋ฅผ ์‚ฝ์ž… / ์‚ญ์ œ ์‹œ ์›์†Œ๋ฅผ ์žฌ์ก๋ ฌ ํ•ด์•ผํ•จ(O(n))์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ํšจ์œจ์ ์ด๋‹ค.์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์™€..

[iOS/Swift] Test Code๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž - Unit Test

Unit Test๋ž€ unit test๋ž€ ๋ฌด์—‡์„๊นŒ์š”? ์œ„ํ‚ค๋ฐฑ๊ณผ๋ฅผ ํ†ตํ•ด ์ฐพ์•„๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ๋‹› ํ…Œ์ŠคํŠธ(unit test)๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์˜๋„๋œ ๋Œ€๋กœ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ๋‹ค. ์ฆ‰, ๋ชจ๋“  ํ•จ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋งํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ์–ธ์ œ๋ผ๋„ ์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ๋‹จ์‹œ๊ฐ„ ๋‚ด์— ์ด๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋ฐ”๋กœ ์žก์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ด์ƒ์ ์œผ๋กœ, ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ€์งœ ๊ฐ์ฒด(Mock object)๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” (์ผ๋ฐ˜์ ์ธ ํ…Œ์ŠคํŠธ์™€ ๋‹ฌ๋ฆฌ) ๊ฐœ๋ฐœ์ž(developer) ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณด๋‹ค ๋” ์‹ฌ๋„์žˆ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ํ…Œ์Šคํ„ฐ(tester)์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜๊ธฐ๋„ ํ•œ..

iOS/Swift 2023. 10. 15. 17:53
[iOS/Swift] Test Code๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž - TDD๋ž€?

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ ํ…Œ์ŠคํŠธ๋ผ๋Š” ์ฃผ์ œ์— ๋น ์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐํš์•ˆ์„ ๋ฐ›๊ณ  ์ฒ˜์Œ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ๋Š” ๋ชจ๋“  ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๊ณ ๋ คํ•˜๋ฉด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ํ•˜์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ž‘์—…ํ•œ์ง€ ์˜ค๋ž˜๋œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋‹ค ๋ณด๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ๋‚˜๊ธฐ ๋งˆ๋ จ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ ๊ณ ๋ฏผํ•˜๋˜ ์ค‘ ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ณ  ์ถ”ํ›„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ์ด๋Ÿฐ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์žก์•„๋‚ด๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๊ฒ ๋‹ค ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ๋ฐ€๋ ค๋‚˜ ์žˆ๋˜ Test Code์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ์ƒ๊ฒผ๊ณ  TDD์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. TDD(Test - Driven Development) ๋ž€? TDD๋ž€ Test-Driven-Development, ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ์งง์€ ๊ฐœ๋ฐœ ์‚ฌ์ดํด์„ ๋ฐ˜๋ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜..

iOS/Swift 2023. 10. 11. 00:28
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2026/04   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ