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
[iOS/Swift]Test Code๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž - Network test๋ฅผ ์œ„ํ•œ mock

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. test code์—์„œ F.I.R.S.T ์›์น™์ค‘์— ํ•˜๋‚˜๋Š” Independent - ํ…Œ์ŠคํŠธ๋Š” ๋…๋ฆฝ์ ์ด์—ฌ์•ผ ํ•˜๋ฉฐ ์˜์กดํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์‹ค์ œ๋กœ ๋งŽ์ด ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” network๋ฅผ ํ†ตํ•ด request๋ฅผ ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ฅธ response๋ฅผ ๋ฐ›๋„๋ก ์ž‘์„ฑํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ networkํ†ต์‹ ์€ ์™ธ๋ถ€์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜๊ฒŒ ๋˜์–ด ํ…Œ์ŠคํŠธ ์‹œ ๋ถ„๋ฆฌํ•˜์—ฌ์•ผ ํ•˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. test code์—์„œ ์‹ค์ œ๋กœ network ํ†ต์‹ ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์‹ค์ œ๋กœ ํ˜ธ์ถœ๋˜๋‹ค ๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์–ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ• ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ž˜๋ชป๋œ request๋กœ ์„œ๋ฒ„์— ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ test code์—์„œ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ธฐ๋Šฅ ์ฝ”๋“œ์—..

iOS/Swift 2023. 10. 26. 00:48
[iOS/Swift] TestCode๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž - Test Doubles(Mock, Stub, Fake, dummy)

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ Stub, Mock ๋“ฑ ์ด๋Ÿฐ ๋‹จ์–ด๋“ค์„ ์ž์ฃผ ๋ณด์…จ์„ ํ…๋ฐ์š”. ๊ทธ๋ƒฅ ๋”๋ฏธ ๋ฐ์ดํ„ฐ์ธ๊ฐ€? ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ๋„˜์–ด๊ฐˆ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์šฉ์–ด ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค Test Double์ด๋ž€? test double์€ ๋ฌด์—‡์ผ๊นŒ? ํ…Œ์ŠคํŠธ๋ฅผ ๋‘๋ฒˆ ํ•œ๋‹ค๋Š” ๋œป์ผ๊นŒ? ์ด ๋œป์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ž ์‹œ ์ฃผ์ œ๋ฅผ ์˜ํ™”๋กœ ์˜ฎ๊ฒจ๋ณผ๊ฒŒ์š”. ์˜ํ™” ์ดฌ์˜์žฅ์—์„œ stunt double์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. stunt double์€ stunt man๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋ฐฐ์šฐ์™€ ๋น„์Šทํ•œ ์ฒด๊ฒฉ, ์™ธ๋ชจ, ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ ์œ„ํ—˜ํ•œ ์”ฌ์„ ๋Œ€์‹  ์ดฌ์˜ํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋งํ•˜๋Š”๋ฐ์š”. ๊ทธ๋ ‡๋‹ค๋ฉด test double์€ ์‹ค์ œ๋กœ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ์™€ ๋น„์Šทํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋„๋ก ๋•๋Š” ..

iOS/Swift 2023. 10. 20. 00:20
[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/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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 31
๊ธ€ ๋ณด๊ด€ํ•จ