๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€ 83

[Swift] ์ž˜๋ชป๋œ Coordinator ์‚ฌ์šฉ ๊ทธ๋ฆฌ๊ณ  ๋ฆฌํŒฉํ† ๋ง

์•ž์„œ ํฌ์ŠคํŒ…ํ•œ ๊ธ€ ์ค‘์— Coordinator๋ฅผ ์‚ฌ์šฉํ•œ ํ›„๊ธฐ๊ฐ€ ์žˆ๋‹ค. ๋๋งบ์Œ์— ์•„๋ฌด๋ž˜๋„ ์ง€๊ธˆ๊นŒ์ง€ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ ์—ˆ์—ˆ๋Š”๋ฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๋ฉด์„œ ๋ฆฌํŒฉํ† ๋ง์„ ์‹œ์ž‘ํ–ˆ๋‹ค. [๋””์ž์ธ ํŒจํ„ด] Coordinator๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ(feat.MVVM-C) ์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ Coordinator ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ๊ฐœํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ๋ฐ Coordinator ์‚ฌ์šฉ์— ์žˆ์–ด ๋ญ”๊ฐ€ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜์–ด pooh-footprints.tistory.com ์œ„์˜ ํฌ์ŠคํŒ…์ฒ˜๋Ÿผ MVVM + CleanArchitecture๋ฅผ ์ ์šฉํ•˜๋ฉด์„œ ํ•จ๊ป˜ Coordinator๋ฅผ ์ ์šฉํ–ˆ์—ˆ๋‹ค. ๋‹น์‹œ์—๋Š” ViewModel์˜ ์ƒ์„ฑ์ž์— Coordinator๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  ํ•ด๋‹น ViewMode..

iOS/Swift 2024.01.16

[RxSwift] RxDataSource ์ž…๋ฌธ ํ•ด๋ณด๊ธฐ(feat.MVVM)

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ RxDataSource์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. RxDataSource๋ฅผ ํ•™์Šตํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด๋ดค์Šต๋‹ˆ๋‹ค. RxDataSource๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” RxSwift๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ๋ถ€ํ„ฐ ์•Œ๊ณ ๋Š” ์žˆ์—ˆ์ง€๋งŒ ํšŒ์‚ฌ๋‚˜ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•ด ๋ณธ ์ ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„น์…˜์ด ํ•„์š”ํ•œ ์ž‘์—…์ด ์žˆ์–ด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•™์Šตํ•˜๊ณ  ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด์„œ ์ž…๋ฌธํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. RxDataSource? ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ( RxSwift, RxCocoa ) ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. tasks .bind(to: taskTableView.rx.items(cellIdentifier: TaskTableViewCell.identifier, cellType: TaskTableViewCell.sel..

iOS/RxSwift 2023.09.28

[์•„ํ‚คํ…์ฒ˜] ReactorKit์— ๋Œ€ํ•ด์„œ(feat.Flux)

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ ReactorKit์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ReactorKit? ReactorKit์˜ ๊นƒํ—ˆ๋ธŒ์— ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ์†Œ๊ฐœ๊ธ€์˜ ์ฒซ ๋ฌธ์žฅ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ReactorKit is a framework for a reactive and unidirectional Swift application architecture. - ReactorKit์€ ๋ฐ˜์‘ํ˜• ๋ฐ ๋‹จ๋ฐฉํ–ฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜•์ด๋ผ๋Š” ๋‹จ์–ด๋งŒ ๋ด๋„ Reactive Programming์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋‹จ๋ฐฉํ–ฅ์ด๋ผ๋Š” ๋ง์€ ์กฐ๊ธˆ ์–ด์ƒ‰ํ•˜๊ธฐ๋„ ํ•˜๊ณ  ์‰ฝ๊ฒŒ ๋ญ”๊ฐ€๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ธฐ ์–ด๋ ค์› ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๊นƒํ—ˆ๋ธŒ๋ฅผ ์กฐ๊ธˆ ๋” ๋“ค์—ฌ๋‹ค๋ณด๋ฉด ReactorKit์€ Flux(๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„์˜ ์•„ํ‚คํ…์ฒ˜) ..

[๋””์ž์ธ ํŒจํ„ด] Coordinator๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ(feat.MVVM-C)

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ Coordinator ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ๊ฐœํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ๋ฐ Coordinator ์‚ฌ์šฉ์— ์žˆ์–ด ๋ญ”๊ฐ€ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜์–ด ๋‹ค์‹œ ๊ณต๋ถ€ํ•  ๊ฒธ ํฌ์ŠคํŒ… ๋‚จ๊ฒจ๋ด…๋‹ˆ๋‹ค. Coordinator Coordinator ๋””์ž์ธ ํŒจํ„ด์€ ๊ธฐ์กด์˜ ViewController์—์„œ ์ฒ˜๋ฆฌํ–ˆ๋˜ ํ™”๋ฉด์ „ํ™˜์ด๋‚˜ ํ๋ฆ„์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‹ด๋‹นํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ฆ‰, ViewController๊ฐ€ ๋‹ค๋ฅธ ViewController๋ฅผ ์ง์ ‘ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋˜ ๊ฒƒ์„ Coordinator๊ฐ€ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๋ช…ํ™•ํ•œ ์—ญํ• ์˜ ๋ถ„๋ฆฌ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜๊ณ  ์ด๋ ‡๊ฒŒ ๋ช…ํ™•ํ•œ ์—ญํ• ์˜ ๋ถ„๋ฆฌ๋กœ ๋” ๊น”๋”ํ•œ ์ฝ”๋“œ, ํ™•์žฅ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์— ์ด์ ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฅ๋‹จ์  ์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ธฐ..

[์•„ํ‚คํ…์ฒ˜] Clean Architecture(ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ(feat.DIP)

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

[iOS] UITableView์—์„œ ์ œ์Šค์ฒ˜ ์‚ฌ์šฉํ•˜๊ธฐ / ์ด์Šˆ์ •๋ฆฌ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ UITableView์— ์ œ์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ Tabman์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ UITableView๊ฐ€ ์žˆ๋Š” View์—์„œ๋Š” UITableView ์ž์ฒด์˜ ์„ธ๋กœ ์Šคํฌ๋กค ์ œ์Šค์ฒ˜ ๋•Œ๋ฌธ์— ํƒญ ๊ฐ„์˜ ์ „ํ™˜์ด ๋˜์ง€ ์•Š๋˜ ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์›์ธ iOS์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  View๋Š” ํ•˜๋‚˜์˜ ์ œ์Šค์ฒ˜๋งŒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— UITableView์—์„œ๋Š” ๊ฐ€๋กœ๋ฐฉํ–ฅ์˜ ์ œ์Šค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ UITableView์—๋Š” ์„ธ๋กœ๋กœ ์Šคํฌ๋กค์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ œ์Šค์ฒ˜๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ์ผ๋‹จ ์ฝ”๋“œ๋ถ€ํ„ฐ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. let swipeGesture = UISwipeGestureRecognizer(target: self, action: #select..

iOS/Swift 2023.07.20

[Swift] Extension์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ Extension์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) Extension ์ด๋ž€?Swift์˜ extension์€ ๊ธฐ์กด์˜ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ์˜ ํƒ€์ž…์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด์˜ ํƒ€์ž…์„ ํ™•์žฅํ•˜๊ฑฐ๋‚˜, ํ”„๋กœํ† ์ฝœ ์ ์šฉ ๋“ฑ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  ๊ธฐ๋ณธ ๋ฌธ๋ฒ•extension์„ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ž…์„ ํ™•์žฅํ•˜๋Š” ๋ฌธ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. extension ํ™•์žฅํ•  ํƒ€์ž… { // ๊ธฐ๋Šฅ ๊ตฌํ˜„} ์œ„ ๋ฌธ๋ฒ•์—์„œ ํ™•์žฅํ•  ํƒ€์ž…์€ ๊ธฐ์กด์— ์ •์˜๋œ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ์˜ ํƒ€์ž…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.  ๊ธฐ๋Šฅ ๊ตฌํ˜„์—๋Š” ๊ธฐ์กด ํƒ€์ž…์— ์ถ”๊ฐ€๋  ํ”„๋กœํผํ‹ฐ, ๋ฉ”์„œ๋“œ, ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ๋“ฑ์˜ ๋ฉค๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, Int ํƒ€์ž…์— isEven์ด๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ..

iOS/Swift 2023.04.13

[Swift] Property(ํ”„๋กœํผํ‹ฐ)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ Swift์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ํ”„๋กœํผํ‹ฐ๋ž€ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋‚ด์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ๋ณ€์ˆ˜ ๋˜๋Š” ์ƒ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜, ๊ณ„์‚ฐํ•˜๋Š” ๋“ฑ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ €์žฅ ํ”„๋กœํผํ‹ฐ์™€ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Swift์—์„œ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธํ•  ๋•Œ var ํ‚ค์›Œ๋“œ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ฑฐ๋‚˜, let ํ‚ค์›Œ๋“œ๋กœ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋‚ด์—์„œ ์„ ์–ธ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์ธ์Šคํ„ด์Šค..

iOS/Swift 2023.04.08

[Swift] Class์™€ Struct์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) Class์™€ Struct Class์™€ Struct๋Š” ๋ชจ๋‘ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋ฉฐ, ๊ฐ๊ฐ์˜ ํŠน์ง•๊ณผ ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Class์™€ Struct์˜ ๊ณตํ†ต์ , ์ฐจ์ด์ , ์–ด๋– ํ•œ ์ƒํ™ฉ์—์„œ class๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€, struct๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Class - Class๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Class๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ์†์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋™์ž‘์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Class๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ƒ์†, ์บก์Šํ™”, ๋‹คํ˜•์„ฑ ๋“ฑ์˜ ํŠน์ง•์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Struct - Struct๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Struct..

iOS/Swift 2023.04.07

[Swift] Delegate Pattern(๋”œ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ Delegate Pattern์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) Swift์˜ Delegate Pattern์ด๋ž€? Swift์—์„œ Delegate Pattern์€ ๊ฐ์ฒด ๊ฐ„ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ„ด์€ ๊ฐ์ฒด ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Delegate๋Š” ํ”„๋กœํ† ์ฝœ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์€ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์ž์‹ ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๊ฐ์ฒด์—๊ฒŒ ํ˜ธ์ถœ๋˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๊ฐ์ฒด๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๊ฐ์ฒด์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด Delegate Pattern์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ํ”„๋กœํ† ์ฝœ ์ •์˜ํ•˜๊ธฐ ๋จผ์ €, ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์—์„œ๋Š” MyViewDelegate..

iOS/Swift 2023.04.04
๋ฐ˜์‘ํ˜•