๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•
[Library] ReactiveX์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์ €๋„ ์š”์ฆ˜์— RxSwift๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. RxSwift์—์„œ Rx๋ฅผ ํ‘œํ˜„ํ•˜๋Š” Reactive eXtension์— ๋Œ€ํ•ด์„œ ๋จผ์ € ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์— ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Reactive X๋ž€? Microsoft์—์„œ "Volta" ๋ผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์— ๋งŒ๋“ค์–ด์ง„ API์ž…๋‹ˆ๋‹ค. Reactive X๋ฅผ ํ•œ๋งˆ๋””๋กœ ์ •์˜ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. "๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ํ๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ API" ๋˜ํ•œ ์˜ต์ €๋ฒ„ ํŒจํ„ด๊ณผ ๋ฐ˜๋ณต์ž ํŒจํ„ด์„ ํ•ฉ์ณ๋†“์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฑ์—”๋“œ ์–ด๋””์—์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  JavaScript,Swift,Python ์–ด๋Š ํ”Œ๋žซํผ์ด๋“ ์ง€ ๊ต์ฐจ๊ฐ€ ์‰ฝ๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ ํ•˜๋„ค์š”. ์žฅ์  4๊ฐ€์ง€๋กœ ๋งํ•  ์ˆ˜ ์žˆ์Šต.. 2020. 12. 24.
[Swift] @discardableResult๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์š”์ฆ˜ RxSwift ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ ์žˆ๋Š”๋ฐ ํ•จ์ˆ˜ ์œ—๋ถ€๋ถ„(?)์— @discardableResult ๋ผ๊ณ  ์“ฐ์—ฌ์žˆ๊ธธ๋ž˜ ์ด๊ฑด ๋ฌด์Šจ ์—ญํ• ์„ ํ•˜์ง€? ํ•˜๊ณ  ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์–ด์„œ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! @discardableResult๋ž€? Swift ๊ณต์‹์‚ฌ์ดํŠธ์—์„  ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ๋Š”๋ฐ์—ฌ ํ•ด์„ํ•ด๋ณด์ž๋ฉด (๊ตฌ๊ธ€๋ฒˆ์—ญ๊ธฐ๋กœ...) "๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ˜ธ์ถœ๋  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ํ•จ์ˆ˜ ๋˜๋Š” ๋ฉ”์„œ๋“œ ์„ ์–ธ์— ์ด ์†์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค." ๋ผ๊ณ  ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ฒŒ ํ•ด์ค€๋‹ค๋„ค์š”. ์˜ˆ์ œ๋กœ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด Boolean๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” something() ํ•จ์ˆ˜๋ฅผ.. 2020. 12. 24.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] Delegate๋Š” retain์ด ๋ ๊นŒ? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” Delegate๋Š” retain์ด ๋ ๊นŒ? ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ์ œ๋Š” ๋จผ์ € ์ง€๋‚œ ์‹œ๊ฐ„์— ๋‹ค๋ค˜์—ˆ๋˜ Delegate์™€ Protocol ๊ทธ๋ฆฌ๊ณ  Retain Cycle์ด๋ž€? ์„ ๋ณด๊ณ  ์˜ค์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š”! ๊ทธ๋Ÿผ ๋ฐ”๋กœ ์‹œ์ž‘ํ•ด๋ณผ๊ฒŒ์š”~ Class-Ony-Protocol ๋จผ์ € Retain์€ ์ €๋ฒˆ ์‹œ๊ฐ„์— ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋ƒˆ์„๋•Œ ์ฆ‰ ์ธ์Šคํ„ดํ™”๋ฅผ ์‹œ์ผœ์ค„๋•Œ ์ƒ๊ธด๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Delegate๋Š” Protocol์„ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์ด๊ณ  Protocol์€ Class๊ฐ€ ์•„๋‹ˆ๋‹ˆ๊น Retain์ด ๋˜์ง€ ์•Š๋Š”๊ฑฐ๊ฒ ์ง€ ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค์—์„œ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•  ๋•Œ๋Š” Class - Only - Protocol ์ด๋ผ๋Š” ํด๋ž˜์Šค ์ „์šฉ ํ”„๋กœํ† .. 2020. 12. 23.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] GCD๋ž€? - ๊ฐœ๋… ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” GCD(Grand Central Dispatch)์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Multi Threading ๋จผ์ € GCD ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„  ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ ์ด๋ผ๋Š” ๊ฐœ๋…์„ ์•Œ๊ณ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด GCD ๊ฐ€ ์• ํ”Œ์—์„œ ์ œ๊ณตํ•˜๋Š” API์ธ๋ฐ ์ด๊ฒƒ์€ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ ์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ธ๋ฐ์š”. ์™œ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ๊ฐ€ ํ•„์š”ํ• ๊นŒ์š”? ๋ณดํ†ต์˜ ์ž‘์—…๋“ค์€ ๋Œ€ํ‘œ์ ์œผ๋กœ UI๊ด€๋ จ ์ž‘์—…๋“ค์€ ๋ฉ”์ธ์“ฐ๋ ˆ๋“œ์—์„œ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ˆœ์ฐจ์ (sync)์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์ฃ . ํ•˜์ง€๋งŒ ์ˆœ์„œ์—†์ด ๋™์‹œ(async)์— ์ด๋ค„์ ธ์•ผ ํ•  ๊ฒƒ๋“ค์ด ์žˆ์ฃ ? ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ๊ฐ™์€ ๊ฒฝ์šฐ ๋™์‹œ์— ๋‹ค์šด๋กœ๋”ฉ์„ ์‹œ์ž‘ํ•ด์„œ ๋จผ์ € ๋๋‚œ ์ด๋ฏธ์ง€๋Š” .. 2020. 12. 18.
[ํ•ด๊ฒฐ๋ฒ•] ์Šคํ† ๋ฆฌ๋ณด๋“œ ์ „์ฒด ๋ธ”๋ž™์Šคํฌ๋ฆฐ (All Storyboard Black Screen) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ๋งŒ๋‚œ ์—๋Ÿฌ๋Š” ์Šคํ† ๋ฆฌ๋ณด๋“œ ์ „์ฒด๊ฐ€ ๋ธ”๋ž™์Šคํฌ๋ฆฐ์œผ๋กœ ๋ณ€ํ•˜๋Š” ํ˜„์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋งฅ์„ ๊ป๋‹ค ์ผœ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค! 2020. 12. 17.
[iOS/UI] UITableView๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ํ…Œ์ด๋ธ”๋ทฐ์ž…๋‹ˆ๋‹ค. iOS ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๊ฑฐ์˜ ํ•„์ˆ˜๋กœ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํด๋ž˜์Šค์ด์ฃ . ๊ทธ๋™์•ˆ ์ œ๊ณต๋˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋Œ€์ถฉ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์˜ค๋Š˜์€ ์ง„์งœ ํ•˜๋‚˜ํ•˜๋‚˜ ์„ธ์„ธํ•˜๊ฒŒ ๋ณด๋ฉด์„œ ์•Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. UITableView ๊ณต์‹ ๋ฌธ์„œ์—๋Š” "๋‹จ์ผ ์—ด์— ๋ฐฐ์—ด๋œ ํ–‰์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ทฐ" ๋ผ๊ณ  ๋˜์–ด์žˆ๋„ค์š”. ๋˜ํ•œ UIScrollView ์— ์ƒ์†๋ฐ›๊ณ  ์žˆ์œผ๋ฏ€๋กœ Scroll์ด ๋‹น์—ฐํžˆ ๊ฐ€๋Šฅํ•˜๊ณ  Scroll ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ๋“ค๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Data Source ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์†Œ์Šค ๋ฉ”์†Œ๋“œ๋Š” numberOfSections ์™€ numberOfRowsInSection ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. numberOfSections ์€ ์„น์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ numberOfRowsInSection.. 2020. 12. 16.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] ์ œ๋„ค๋ฆญ์ด๋ž€? (Swift Generic) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ์ œ๋„ˆ๋ฆญ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๋„ˆ๋ฆญ์„ ๋“ค์–ด๋ณด๊ธฐ๋งŒํ•˜๊ณ  ์ œ๋Œ€๋กœ ์•Œ์•„๋ณด๋Š”๊ฑด ์ด๋ฒˆ์ด ์ฒ˜์Œ์ธ๋ฐ ์ •๋ง ์œ ์šฉํ•œ ๋…€์„์ด๋ผ์„œ ๊ณต์œ ๋“œ๋ฆด๋ ค๊ณ  ํ•ด์š”! ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Generic ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•˜๋„ค์š”. ์‹ค์ œ๋กœ Swift์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ผ๋Š” ํƒ€์ž…์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„ ์„ค๋ช…๋งŒ์œผ๋กœ๋Š” ์ดํ•ด๊ฐ€ ํž˜๋“œ์‹ค๊ฑฐ์—์š”. ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ด…์‹œ๋‹ค! ๋งŒ์•ฝ old์™€ new๋ผ๋Š” ๊ธ€์ž๋ฅผ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋ฐ”๊พธ๊ณ ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”? ๋ฐ”๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊ฑฐ์—์š”. ๋งŒ์•ฝ old์™€ new๊ฐ€ ์ˆซ์ž๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ๊นŒ์š”? ๋ฐ”๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊ฑฐ์—์š”. ๋งŒ์•ฝ์— ๋ฉ”์†Œ๋“œ์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…์„ ์•Œ์•„์„œ ์•Œ๊ณ  ๋ฐ”๊ฟ”์ฃผ๋ฉด ์–ผ๋งˆ๋‚˜ ํŽธํ• ๊นŒ์š”? ๋งˆ์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ˆซ.. 2020. 12. 15.
[iOS] ํด๋ž˜์Šค์ด๋ฆ„ ํ•œ๋ฒˆ์— ๋ชจ๋‘ ๋ฐ”๊พธ๊ธฐ (Refactor Class name) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜๋„ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ๊ฒŒ ์žˆ์–ด์„œ ๊ณต์œ ๋“œ๋ฆด๋ ค๊ณ  ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํ‰์†Œ์— ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋‚˜ ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€๋•Œ ์ง์ ‘ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ํ•ด๋‹น ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ๋˜ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—๊ฐ€์„œ ํ•ด๋‹น ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์Šคํ† ๋ฆฌ๋ณด๋“œ,ํŒŒ์ผ,๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ด๋ฆ„์„ ํ•œ๋ฒˆ์— ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์—ˆ๋Š”๋ฐ์š” ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!! ๋ฐ”๋กœ ์•„๋ž˜ ViewController์ด๋ฆ„์ด ์›๋ž˜ OnboardingViewController์ธ๋ฐ์š”. ์ €๋Š” ์ด๊ฒƒ์„ TravelViewController๋กœ ๋ฐ”๊พธ๊ณ ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๊ฟ€ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ˆ„๋ฅด๊ณ  ์šฐ์ธก ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜์‹œ๋ฉด Refactor๋ผ๊ณ  ๋ณด์ด์‹ค๊ฑฐ์—์š”. ๊ฑฐ๊ธฐ์„œ Rename์„ ํ•˜์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ํŒŒ์ผ ๋ชจ๋‘ ํ•œ๋ฒˆ์— ๋ณด.. 2020. 12. 14.
[iOS/UI] UILabel ๊ธ€์ž์ˆ˜์— ๋”ฐ๋ผ์„œ ํฐํŠธํฌ๊ธฐ ์ž๋™์œผ๋กœ ๋งž์ถ”๊ธฐ (Minimum Font Scale) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๊ธ€์ž์ˆ˜์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ํฐํŠธํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์•Œ๊ฒŒ ๋˜์–ด์„œ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•ด๋“œ๋ฆด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๊ฐ™์€ ํฌ๊ธฐ ์•ˆ์— ๊ธ€์ž๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด (์Šคํฌ๋กค๋˜์ง€์•Š๊ณ ) ํฐํŠธํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ ๋ชจ๋“  ๊ธ€์ž๊ฐ€ ๋ณด์ด๋„๋ก ํ•ด์•ผํ• ํ…๋ฐ์š”. StoryBoard ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐ€์…”์„œ ์•„๋ž˜ ๋ณด์ด๋Š” Autoshrink๋ฅผ ํƒญํ•˜์‹œ๋ฉด minimum Font Scale๊ณผ minimum Font Size๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ์—ฌ๊ธฐ์„œ minimum Font Scale์„ ๊ณจ๋ผ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•„๋ž˜์ฒ˜๋Ÿผ ๊ธ€์ด ์ ์„๋•Œ๋Š” ํฐํŠธ์‚ฌ์ด์ฆˆ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ํฌ๊ฒŒ ๊ธ€์ด ์•„์ฃผ ๊ธธ๋•Œ๋Š” ํฐํŠธ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘๊ฒŒ ์กฐ์ •๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!! 2020. 12. 14.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ž€? (Swift Singleton Pattern) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์ฃผ์ œ์ด๋ฏ€๋กœ ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค~ Singleton "์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์—์„œ ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์„ ๋”ฐ๋ฅด๋Š” ํด๋ž˜์Šค๋Š”, ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜๋”๋ผ๋„ ์‹ค์ œ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์ด๊ณ  ์ตœ์ดˆ ์ƒ์„ฑ ์ดํ›„์— ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๋Š” ์ตœ์ดˆ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์ด์™€ ๊ฐ™์€ ๋””์ž์ธ ์œ ํ˜•์„ ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค." - ์œ„ํ‚ค๋ฐฑ๊ณผ ๋ง ๊ทธ๋Œ€๋กœ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœ๋˜์–ด๋„ ๋”ฑ ํ•œ ๊ฐ์ฒด๋งŒ ์ƒ์„ฑ๋˜๋„๋ก ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด์—์š”. ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ์š”? ์‰ฝ๊ฒŒ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค. ์ž ์—ฌ๊ธฐ Foma ๋ผ๋Š” ์œ ์ €๊ฐ€ ์žˆ๊ณ  ๋กœ๊ทธ์ธ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ViewController1์—์„œ๋Š” Foma ์˜ ์ด๋ฆ„์ด ํ•„์š”ํ•˜๊ณ  ViewController2์—์„œ๋Š” Foma ์˜ ๋‚˜์ด๊ฐ€ ํ•„์š”ํ•ฉ.. 2020. 12. 11.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋‹จ์–ด ๋ณ€ํ™˜ Swift Source Code Solution ํ•ด๋‹น ๋ฌธ์ œ๋Š” DFS๋กœ ํ’€์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 1.begin์ด target๊ณผ ํ•œ๊ธ€์ž๋งŒ ๋‹ค๋ฅธ์ง€ ํ™•์ธํ•ด์ค€๋‹ค. (์ด ์กฐ๊ฑด์ด ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผํ•จ) 2. 1๋ฒˆ์ด true๋ผ๋ฉด words์— target์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. 2-1 2๋ฒˆ์ด true๋ผ๋ฉด answer๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. 2-2 2๋ฒˆ์ด false๋ผ๋ฉด words์— ์žˆ๋Š” ๋‹จ์–ด์™€ begin์ด ํ•œ๊ธ€์ž๋งŒ ๋‹ค๋ฅธ์ง€ ํ™•์ธํ•œ๋‹ค. 3. 2-2๊ฐ€ true๋ผ๋ฉด begin์„ words์— ์žˆ๋Š” ๋‹จ์–ด๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ๋‹ค์‹œ 1๋ฒˆ๋ถ€ํ„ฐ ํ™•์ธ Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋‹จ์–ด ๋ณ€ํ™˜ ๋‘ ๊ฐœ์˜ ๋‹จ์–ด begin, target๊ณผ ๋‹จ์–ด์˜ ์ง‘ํ•ฉ words๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์„ ์ด์šฉํ•˜์—ฌ begin์—์„œ target์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๋ณ€ํ™˜ ๊ณผ์ •์„ ์ฐพ์œผ๋ ค๊ณ  .. 2020. 12. 11.
[ํ•ด๊ฒฐ๋ฒ• ํฌํ•จ]Undefined symbol:_OBJC_CLASS_$_ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜๋„ ์–ด๊น€์—†์ด ์ƒˆ๋กœ์šด ์—๋Ÿฌ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ "Undefined symbol:_OBJC_CLASS_$_" ๋ผ๋Š” ์˜ค๋ฅ˜์˜€์Šต๋‹ˆ๋‹ค. ์ •๋ง ์•„๋ฌด๊ฒƒ๋„ ์•ˆ๊ฑด๋“œ๋ฆฌ๊ณ  podfile์— ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์ค€๊ฒƒ ๋ฟ์ธ๋ฐ.... ๊ทธ๋ž˜๋„ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋งํ•ด๋ณด๋‹ˆ๊น ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•ด๊ฒฐ๋ฒ•์ด ๋งŽ์•˜๋Š”๋ฐ ์ œ๊ฐ€ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์œผ๋ก  podfile์„ ๋ณด์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์žˆ์„๊ฑฐ์—์š”! ์ €๋Š” ์ด๊ฒƒ๋“ค์„ ์ „๋ถ€ ๋‹ค ์ง€์šฐ๊ณ  (๋‹ค์‹œ ๋„ฃ์–ด์ค„๊ฑฐ๋‹ˆ๊น ๋ฐ˜๋“œ์‹œ ๋ณต์‚ฌํ•ด๋‘๊ณ  ์ง€์›Œ์ฃผ์„ธ์š”!) ํ„ฐ๋ฏธ๋„์—์„œ pod install์„ ํ•ด์ฃผ์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์ด ๋ณด์ผ๊ฑฐ์—์š”! (์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์‚ญ์ œํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.) ๋‹ค์‹œ podfile๋กœ ๋Œ์•„๊ฐ€์„œ ์•„๊นŒ ์ง€์› ๋˜ ๊ฒƒ๋“ค์„ ๋‹ค์‹œ ๋ถ™์—ฌ๋„ฃ์–ด์ฃผ๊ณ  pod insta.. 2020. 12. 11.
728x90
๋ฐ˜์‘ํ˜•