๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽ iOS138

[๐Ÿงฉ Creative Coding] ์ปฌ๋Ÿฌํ’€ํ•œ ๋ฌผ๊ฒฐ ์›จ์ด๋ธŒ ๋งŒ๋“ค๊ธฐ(feat. Interactive Developer) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ €๋ฒˆ์— ์ค„์— ๋งค๋‹ฌ๋ ค ํ”๋“ค๋ฆฌ๋Š” ์ƒ์ž ๋งŒ๋“ค๊ธฐ ์— ์ด์–ด์„œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋””๋ฒจ๋กœํผ๋‹˜์˜ ํŠœํ† ๋ฆฌ์–ผ ์›€์ง์ด๋Š” ์›จ์ด๋ธŒ๋ฅผ Swift๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ์•„๋ž˜๋Š” ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋””๋ฒจ๋กœํผ ๊น€์ข…๋ฏผ๋‹˜์˜ ํŠœํ† ๋ฆฌ์–ผ ์˜์ƒ์ž…๋‹ˆ๋‹ค. Preview 1. S์ž ๊ณก์„  ๊ทธ๋ฆฌ๊ธฐ S์ž ๊ณก์„ ์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ์‹œ์ž‘๊ณผ ๋์„ ์ •ํ•ด์ฃผ๊ณ  ์‚ฌ์ด์— ๋‘ ์ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์ด์˜ ์ ์„ ์œ„๋กœ ๋‹น๊ธฐ๊ฑฐ๋‚˜ ์•„๋ž˜๋กœ ๋‹น๊ฒจ์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ S์ž ๊ณก์„ ์ด ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. 2. ์›€์ง์ด๋Š” ์›จ์ด๋ธŒ ๋งŒ๋“ค๊ธฐ ์—ฐ๊ฒฐ๋œ ์„ ์˜ ์‚ฌ์ด ๋‘ ์ ์„ ์œ„ ์•„๋ž˜๋กœ ์ด๋™์‹œํ‚ค๋ฉด ์›จ์ด๋ธŒ๊ฐ€ ์›€์ง์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒ ์ฃ ? 3. ์—ฌ๋Ÿฌ ์›จ์ด๋ธŒ ๋งŒ๋“ค๊ธฐ ์šฐ์„  ์‹œ์ž‘๊ณผ ๋์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘ ์ ์œผ๋กœ ์ •ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์‚ฌ์ด์— ์žˆ๋Š” ์  4๊ฐœ๋ฅผ 1,2,3,4๋ผ๊ณ  ๋ถ€.. 2021. 12. 16.
[๐Ÿงฉ Creative Coding] ์ค„์— ๋งค๋‹ฌ๋ ค ํ”๋“ค๋ฆฌ๋Š” ์ƒ์ž ๋งŒ๋“ค๊ธฐ (feat. Interactive Developer) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ค„์— ๋งค๋‹ฌ๋ ค ํ”๋“ค๋ฆฌ๋Š” ์ƒ์ž๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ๊ฑด๋ฐ์š”. ์ด๊ฑด ์ œ๊ฐ€ ์กด๊ฒฝํ•˜๋Š” ๊ฐœ๋ฐœ์ž์ด๊ธฐ๋„ ํ•œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋””๋ฒจ๋กœํผ ๊น€์ข…๋ฏผ๋‹˜์˜ ์œ ํŠœ๋ธŒ ์ฑ„๋„์— ์˜ฌ๋ผ์˜จ ํŠœํ† ๋ฆฌ์–ผ ์ค‘ ํ•˜๋‚˜์ธ๋ฐ์š”. ์˜ˆ์ „๋ถ€ํ„ฐ ์ด๋Ÿฐ ์ฐฝ์˜์ ์ธ ์ฝ”๋”ฉ, ์˜ˆ์ˆ ์ ์ธ ์ฝ”๋”ฉ์„ ํ•˜๊ณ ์‹ถ์€ ์š•์‹ฌ์ด ๋งŽ์•˜์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ๊น€์ข…๋ฏผ๋‹˜์„ ๋”ฐ๋ผ์„œ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์˜์ƒ์„ ๋ณด๋ฉฐ ๋‚˜๋ฆ„ ์ œ ๋ฐฉ์‹๋Œ€๋กœ Swift๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ View ๋จผ์ € ์ƒ์ž์™€ ๋นจ๊ฐ„ ์ ์„ UIView๋กœ ์„ธํŒ…ํ•ด์ค๋‹ˆ๋‹ค. (์ €๋Š” ์ƒ์ž ๊ฐ€์šด๋ฐ์— ์ œ ์ด๋ฆ„์„ ๋„ฃ์–ด์„œ ๋ณด์—ฌ์ค„ ๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์— label๋„ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.) let square:UIView = { let view:UIView = UIView() view.backgroundColor = .systemCyan .. 2021. 11. 23.
[SwiftUI] @State๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์š”์ฆ˜ SwiftUI ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ @State๊ฐ€ ๋งŽ์ด ์“ฐ์ด๊ธด ํ•˜๋Š”๋ฐ ๋ญ”์ง€ ์ •ํ™•ํžˆ๋Š” ๋ชจ๋ฅด๊ฒ ๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ @State์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํžˆ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ @State ๋ž€? ์• ํ”Œ ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์„ํ•ด๋ณด๋ฉด SwiftUI์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ’์„ ์ฝ๊ณ  ์“ธ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜๋„ค์š”. ๊ฐœ์š”๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1. ์ƒํƒœ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด View๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. 2. ์ธ์Šคํ„ด์Šค ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๊ฐ’์„ ์ฝ๊ณ  ์“ฐ๋Š” ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค. 3. ์ฃผ์˜ํ•  ์ ์€ ๋ทฐ์˜ ๋ฐ”๋”” ์•ˆ์—์„œ ๋˜๋Š” ๋ทฐ์—์„œ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ์—์„œ๋งŒ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ทฐ์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋กprivate๋กœ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 4. ์‚ฌ์šฉํ•  ๋•Œ๋Š” $์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ.. 2021. 11. 7.
[iOS/UI] ์ด๋ฏธ์ง€ ์คŒ์œผ๋กœ ํ™•๋Œ€/์ถ•์†Œํ•˜๊ธฐ(feat. ์Šคํฌ๋กค๋ทฐ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ์ด๋ฏธ์ง€๋ฅผ ํ™•๋Œ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Storyboard ๋ ˆ์ด์•„์›ƒ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์Šคํฌ๋กค๋ทฐ์— ์ด๋ฏธ์ง€๋ทฐ๊ฐ€ ํฌํ•จ๋˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”. ViewController ๋จผ์ € ์ด๋ฏธ์ง€๋ทฐ์™€ ์Šคํฌ๋กค๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ์„ธ์š”. @IBOutlet weak var imageView: UIImageView! @IBOutlet weak var scrollView: UIScrollView! ์ดˆ๊ธฐ ์„ธํŒ…์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด์ฃผ์„ธ์š”. 1. ์ด๋ฏธ์ง€๋ทฐ์˜ ์ด๋ฏธ์ง€๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„ธํŒ…ํ•ด์ค๋‹ˆ๋‹ค. 2. ์Šคํฌ๋กค๋ทฐ์˜ ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ํ˜„์žฌ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”. (์•„์ง ์˜ค๋ฅ˜๊ฐ€ ๋‚ ๊ฑฐ์—์š”.) 3. ์Šคํฌ๋กค๋ทฐ์˜ ์ฒ˜์Œ ์คŒ์Šค์ผ€์ผ์„ ์ •ํ•ด์ค๋‹ˆ๋‹ค. (๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด 1.0์ž…๋‹ˆ๋‹ค.) 4. ์Šคํฌ๋กค๋ทฐ์˜ ์ตœ์†Œ ์คŒ์Šค์ผ€์ผ์„ ์ •ํ•ด์ค๋‹ˆ๋‹ค... 2021. 11. 3.
[Design Pattern] MVVM(Model - View - ViewModel) ํŒจํ„ด์ด๋ž€? (feat. Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ •๋ง ์˜ค๋žœ๋งŒ์— ๋””์ž์ธ ํŒจํ„ด์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. ๊ทธ ์ค‘์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ(?)์žˆ๊ณ  ํ•ซํ•œ MVVM ๋””์ž์ธ ํŒจํ„ด์„ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (SwiftUI ๋˜ํ•œ ๊ธฐ๋ณธ ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ MVVM์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.) ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ MVVM(Model - View - ViewModel)ํŒจํ„ด์ด๋ž€? ๐Ÿง MVVM์€ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ์œผ๋กœ GUI ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(๋ทฐ)์˜ ๊ฐœ๋ฐœ์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋˜๋Š” ๋ฐฑ์—”๋“œ ๋กœ์ง(๋ชจ๋ธ)๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ์‹œ์ผœ์„œ ๋ทฐ๊ฐ€ ์–ด๋Š ํŠน์ •ํ•œ ๋ชจ๋ธ ํ”Œ๋žซํผ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•ด์ค€๋‹ค. MVVM์˜ ๋ทฐ ๋ชจ๋ธ์€ ๊ฐ’ ๋ณ€ํ™˜๊ธฐ์ธ๋ฐ, ์ด๋Š” ๋ทฐ ๋ชจ๋ธ์ด ๋ชจ๋ธ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๋…ธ์ถœ(๋ณ€ํ™˜)ํ•˜๋Š” ์ฑ…์ž„์„ ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.. 2021. 10. 19.
[iOS/Framework] Quick/Nimble์ด ๋ญ˜๊นŒ? (feat. ์‚ฌ์šฉ๋ฒ•) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์„ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ์šฐ์—ฐํžˆ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋ถ„๋“ค์ด Quick๊ณผ Nimble์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ Quick๊ณผ Nimble์ด ์–ด๋–ค ๊ฒƒ์ด๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Quick ๋จผ์ € Quick์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž์‹ ๋“ค์„ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. RSpec, Specta,Ginkgo์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ Swift ๋ฐ Objective-C๋ฅผ ์œ„ํ•œ ํ–‰๋™ ์ค‘์‹ฌ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ฆ‰ iOS ์ „์šฉ BDD ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ๊ฒƒ์ด์ฃ . ์ •๋ง ๋†€๋ž๊ฒŒ๋„ ํ•œ๊ตญ์–ด ๋ฒ„์ „์œผ๋กœ ๋ฌธ์„œ๊ฐ€ ์ œ๊ณต๋˜์–ด ์žˆ์–ด ๊ตฌ์ฒด์ ์œผ๋กœ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ์—์„œ ์ฝ์–ด๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. GitHub - Quick/Quick: The Swift (and Objective-C) te.. 2021. 8. 31.
[RIBs] AddMemo ๊ตฌํ˜„ํ•˜๊ธฐ (๋ฉ”๋ชจ ์ถ”๊ฐ€ํ•˜๊ธฐ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์—” ๋ฉ”๋ชจ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ AddMemoViewController๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ AddMemoRIB ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํฌํ•จํ•œ AddMemoRIB์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. AddMemoViewController.storyboard AddMemoViewController๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ํ…์ŠคํŠธํ•„๋“œ์™€ ์ถ”๊ฐ€๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. ํ…์ŠคํŠธํ•„๋“œ์—” ์ˆซ์ž๋งŒ ๋“ค์–ด๊ฐ€์•ผํ•˜๋ฏ€๋กœ keyboard type์„ numberPad๋กœ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. StoryboardInstantiate ์ƒˆ๋กœ์šด ์Šคํ† ๋ฆฌ๋ณด๋“œ ๋ทฐ์ธ AddMemoViewController๋ฅผ enum์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. enum Storyboard: Stri.. 2021. 8. 26.
[RIBs] Memo ์‚ญ์ œ,์ˆ˜์ • ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— Memo๊นŒ์ง€ ์ด๋™ํ•ด์„œ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๊นŒ์ง€ ๊ตฌํ˜„ํ–ˆ์—ˆ๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ Memoํ™”๋ฉด์—์„œ ์ผ์–ด๋‚˜๋Š” ์‚ญ์ œ,์ˆ˜์ •์„ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ MemoViewController.storyboard ์Šคํ† ๋ฆฌ๋ณด๋“œ ํ™”๋ฉด ๊ตฌ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ํ…Œ์ด๋ธ”๋ทฐ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  ํ…Œ์ด๋ธ”๋ทฐ ์…€์€ MemoTableViewCell์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”๋ทฐ์…€์€ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ด์ค„ Label,์‚ญ์ œ๋ฒ„ํŠผ.๋”ํ•˜๊ธฐ๋ฒ„ํŠผ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. Memo ๋ฉ”๋ชจ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ˆซ์ž๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. struct Memo { let number:Int } MemoData ์›๋ž˜ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผํ•˜์ง€๋งŒ...๊ท€์ฐฎ์œผ๋‹ˆ๊น .. ์ „์—ญ์œผ๋กœ ์„ ์–ธํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์„ธํŒ…ํ•ด.. 2021. 8. 26.
[RIBs] Router๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด ์ „ํ™˜ํ•ด๋ณด๊ธฐ (feat. Memo) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ RIBs ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด ์ „ํ™˜ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด Uber์˜ ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜... ์ €๋Š” ์ž˜์•ˆ๋˜๋”๋ผ๊ตฌ์š”... ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์ข‹์€ ํŠœํ† ๋ฆฌ์–ผ์ด ์—†์„๊นŒ? ํ•˜๊ณ  ์—ด์‹ฌํžˆ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ SimpleMemo๋ฅผ RIBs๋กœ ๊ตฌํ˜„ํ•œ ํŠœํ† ๋ฆฌ์–ผ ์ฐพ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GitHub - eunjin3786/SimpleMemo-RIBs: SimpleMemo๋ฅผ RIBs๋กœ ๋ฐ”๊ฟ”๋ณด์ž :-) SimpleMemo๋ฅผ RIBs๋กœ ๋ฐ”๊ฟ”๋ณด์ž :-). Contribute to eunjin3786/SimpleMemo-RIBs development by creating an account on GitHub. github.com ์ „ ํฌ์ŠคํŒ…์—์„œ RootRIB์—์„œ LoggedOutRIB์„.. 2021. 8. 24.
[RIBs] Interactor๋กœ ๋น„๋‹ˆ์ง€์Šค ๋กœ์ง ์ฒ˜๋ฆฌํ•ด๋ณด๊ธฐ (feat. ์ดˆ๊ธฐ์„ธํŒ…) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ๊ธ€์—์„œ RIBs ์— ๋Œ€ํ•œ ์ด๋ก ์„ ๋‹ค๋ค˜๋Š”๋ฐ์š”. (ํ˜น์‹œ ์•ˆ๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”~) ์˜ค๋Š˜์€ Uber์—์„œ ์ง์ ‘ ์ œ๊ณตํ•˜๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ํ•œ๋ฒˆ ๋”ฐ๋ผํ•ด๋ณด๋ฉด์„œ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๊ฐ€์žฅ ๋จผ์ € RIBs ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ค˜์•ผ๊ฒ ์ฃ ? ์ €๋Š” RIBs Example๋กœ ์ด๋ฆ„ ์ง“๊ฒ ์Šต๋‹ˆ๋‹ค. Pod init & install ์ €๋Š” CocoaPod์„ ์ด์šฉํ•ด์„œ RIBs๋ฅผ ์„ค์น˜ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด pod init์„ ํ•ด์ฃผ์‹œ๋ฉด pod file์ด ์ƒ๊ธธ๊ฑฐ์—์š”. ํŒŸํŒŒ์ผ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. (๋ฒ„์ „์€ ๋ฐ”๋€” ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ณต์‹ ๊นƒํ—™์—์„œ ํ™•์ธํ•ด์ฃผ์„ธ์š”!) pod 'RIBs', '~> 0.9' ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ pod ins.. 2021. 8. 18.
[Design Pattern] RIBs๋ž€?(feat. Uber) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Uber์—์„œ ๋งŒ๋“  ํ”„๋ ˆ์ž„์›Œํฌ์ธ RIBs์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. iOS๊ณ„์—์„œ ์•„์ฃผ ๊ณ ์ˆ˜์ด์‹  '๋ฏผ์†Œ๋„ค'๋‹˜๋„ ์—ฌ๋Ÿฌ ๋””์ž์ธ ํŒจํ„ด์„ ๊ฑฐ์ณ์„œ RIBs์— ์ •์ฐฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๊ณ  ๋˜ ๋งŽ์€ ํšŒ์‚ฌ์—์„œ RIBs ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ ์–ด๋–ค ์ ์ด ์žฅ์ ์ด๊ณ  ๋˜ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ RIBs๋ž€? ๊ณต์‹ ๊นƒํ—™์—์„  ์ด๋ ‡๊ฒŒ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. RIBs๋Š” Uber์˜ ๋ชจ๋ฐ”์ผ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•„ํ‚คํ…์ฒ˜ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. RIB์ด๋ผ๋Š” ์ด๋ฆ„์€ ์ด ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ธ Router, Interactor ๋ฐ Builder์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋งŽ์€ ์ˆ˜์˜ ์—”์ง€๋‹ˆ์–ด์™€ ์ค‘์ฒฉ ์ƒํƒœ๊ฐ€ ์žˆ๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต RIBs ์•„ํ‚ค.. 2021. 8. 18.
[iOS] Code Snippet ์‚ฌ์šฉํ•ด๋ณด๊ธฐ(feat. ์ฝ”๋“œ ์ž๋™์™„์„ฑ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Xcode์—์„œ ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋‹จ์ถ•์–ด๋งŒ ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ์™„์„ฑํ•ด์ฃผ๋Š” Code snippet์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Code Snippet์ด๋ž€? ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์€ ์ž์ฃผ ์“ฐ๋Š” ์ฝ”๋“œ๋“ค์„ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•ด๋‘๊ณ  ๋‹จ์ถ•์–ด๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ‰์†Œ์— guard๋ฌธ์ด๋‚˜,switch๋ฌธ์„ ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋œจ๋Š”๊ฑธ ๋งŽ์ด ๋ณด์…จ์„๊ฑฐ์—์š”. Guard Statement,Switch Statement๋ฅผ ์—”ํ„ฐ๋ฅผ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค. Code Snippet ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ด ๋งŽ์ง€๋งŒ ์ž์ฃผ ์“ฐ๋Š” ์ฝ”๋“œ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด์ž–์•„์š”? ์ด์ œ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์„ ์ปค์Šคํ…€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ.. 2021. 8. 17.
728x90
๋ฐ˜์‘ํ˜•