๋ฐ˜์‘ํ˜•

iOS/Swift 46

[Swift] Cocoapods๋งŒ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ SPM์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ( feat. naverMap )

tuist๋ฅผ ์ด์šฉ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋“ˆํ™” ํ•˜๋Š” ๊ฒฝ์šฐ ํ˜น์€NaverMap๊ณผ ๊ฐ™์ด Cocoapods๋งŒ ์ง€์›ํ•˜์—ฌ SPM์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ SPM์˜ ์ง€์›์ด ํ•„์š”ํ•˜์ง€๋งŒ ์ฃผ๋„๊ถŒ์ด ์—†์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋‚˜์˜ ๊ฒฝ์šฐ, NaverMap์˜ Privacy Manifest์™€ ๊ด€๋ จํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ–ˆ๊ณ SPM์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—NaverMap์˜ SPM์ด ํ•„์š”ํ–ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ Cocoapods์œผ๋กœ ๊ด€๋ฆฌ๋˜๋˜ NaverMap์„ SPM์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.์ˆœ์„œ๋Œ€๋กœ ์•Œ์•„๋ณด์ž. 1. NaverMap SDK๋ฅผ Cocoapods์œผ๋กœ ์„ค์น˜ํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑNaverMap SDK๋ฅผ Cocoapods์œผ๋กœ ์„ค์น˜ํ•˜๋ฉด ์•„๋ž˜์˜ ๋‘ ํด๋”๊ฐ€ ๋ณด์ผ ๊ฒƒ์ด๋‹ค.xcframewo..

iOS/Swift 2024.07.30

[ReactorKit] ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•ด๋ณด๊ธฐ (feat.expectation)

ReactorKit์„ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž ์‹œ ์ง„ํ–‰ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ๋‹ค. GitHub - 9oHigh/usket.RandomUser: Random User Generator๋ฅผ ํ™œ์šฉํ•œ ReactorKit & RxDataSource ํ•™์ŠตRandom User Generator๋ฅผ ํ™œ์šฉํ•œ ReactorKit & RxDataSource ํ•™์Šต - 9oHigh/usket.RandomUsergithub.com ๊ฐ„๋‹จํ•œ ์•ฑ์ด๋‹ค.๋žœ๋ค ์œ ์ € API๋ฅผ ํ†ตํ•ด์„œ 100๋ช…์˜ ์‚ฌ๋žŒ๋“ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ ํ•ด๋‹น ์ธ๋ฌผ๋“ค์„ ํŠน์ •ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋ถ„๋ฅ˜ํ•ด ๋ณด์—ฌ์ฃผ๋Š” ์•ฑ์ด๋‹ค.๊ทธ๋ ‡๊ธฐ์— ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ„๋‹จํ•˜๋‹ค.*UI ํ…Œ์ŠคํŠธ๋Š” ์ง„ํ–‰ํ•˜์ง€ ์•Š์•˜๋‹ค. ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์ „๊ฐ€์žฅ ๋จผ์ € ์–ด๋–ค ๊ฑธ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ• ์ง€ ์ •ํ•ด๋ณด์ž.ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—๋Š” ๋ฆฌ์•กํ„ฐ๊ฐ€ ๋‘๊ฐ€์ง€๋‹ค.ํ•˜๋‚˜๋Š” ๋ฉ”์ธํ™”๋ฉด์—์„œ ์‚ฌ์šฉ..

iOS/Swift 2024.07.15

[Swift] ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž(feat.map)

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

iOS/Swift 2024.02.20

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

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

iOS/Swift 2024.01.16

[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

[Swift] Protocol(ํ”„๋กœํ† ์ฝœ)์— ๋Œ€ํ•ด์„œ

์•ˆ๋…•ํ•˜์„ธ์š”~ ์˜ค๋Š˜์€ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค : ) ํ”„๋กœํ† ์ฝœ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ํ”„๋กœํ† ์ฝœ(protocol)์€ ํŠน์ • ์ž‘์—… ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ, ํ”„๋กœํผํ‹ฐ, ๊ธฐํƒ€ ์š”๊ตฌ์‚ฌํ•ญ ๋“ฑ์˜ ์ฒญ์‚ฌ์ง„์ž…๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์€ ์–ด๋–ค ํƒ€์ž…์ด๋“  ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •์˜๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค. protocol MyProtocol { // ํ”„๋กœํ† ์ฝœ ์ •์˜ } ํ”„๋กœํ† ์ฝœ์€ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ ๋ชจ๋“  ํƒ€์ž…์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์—์„œ ์ •์˜๋œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•œ ํƒ€์ž…์€ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒ(adopt)ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ• 1. ๋ฉ”์„œ๋“œ ํ”„๋กœํ† ์ฝœ์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. protocol MyProtocol { func myMethod() } ์œ„์˜ ์˜ˆ์ œ์—..

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