๐ฑ Mobile/iOS (24) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [iOS - Swift] extension(ํ์ฅ) ์ ๋ํด Swift์์ extension์ ๊ต์ฅํ ๋ง์ด ์ฐ์ธ๋ค. ์ด๋ ์๊ฐ ๋๋ extension์ ๊ฝค๋ ๋ง์ด ์ฌ์ฉํ๊ณ ์์๋ค. ์ค๋์ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐ์ ํ ์ ์๊ณ , Swift์์ ๋ง์ด ํ์ฉ๋๋ ๊ธฐ๋ฅ ์ค ํ๋์ธ 'ํ์ฅ' ์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค. ํ์ฅ extension ์ด๋? ๊ธฐ์กด์ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ, ํ๋กํ ์ฝ ๋ฑ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํ์ฅ์ ๊ธฐ์กด ํ์ ์ ์ ์๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ ํ์ฅ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ฆ, ๊ธฐ์กด ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ ์์ฃผ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฌํ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ํ์ฅ์ ํตํด ์ฝ๋๋ฅผ ๋ชจ๋ํํ๊ณ ํ์ฅ์ฑ์ ๋์ด๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์ ํ ๋ ๊ต์ฅํ ํจ์จ์ ์ด๋ค. extension์ด๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๋ค. ํ์ฅ extension ์ ๊ธฐ๋ฅ ๋ฉ์.. iOS - Delegate Pattern (๋ธ๋ฆฌ๊ฒ์ดํธ ํจํด) ๊ฐ๋จํ ์ฑ์ ๋ง๋๋ ๊ณต๋ถ๋ฅผ ํ๋ ์ค์ "๋ธ๋ฆฌ๊ฒ์ดํธ ํจํด"์ด ์ง์์ ์ผ๋ก ์ธ๊ธ๋๋ฉฐ ์ฌ์ฉํ๊ธธ๋ ์์ธํ ์ง๊ณ ๋์ด๊ฐ๊ณ ์ถ์ด ๊ธ์ ์ฐ๊ฒ ๋์๋ค. Delegate Pattern ๋ธ๋ฆฌ๊ฒ์ดํธ ํจํด์ iOS์์ ์ฌ์ฉ๋๋ ์ฌ๋ฌ ๋์์ธ ํจํด ์ค ํ๋์ด๋ค. ๊ฐ์ฒด๋ค ์ฌ์ด์ ์ํธ์์ฉ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด๋ค. delegate๋ ์ฌ์ ์ ์๋ฏธ๋ก '๋๋ฆฌ์', '์์์' ๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ธ๋ฆฌ๊ฒ์ดํธ ํจํด์ ์ฌ์ฉํ๋ฉด ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์์ ์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๋์ ์ฒ๋ฆฌํ๋๋ก ์์(delegate)ํ ์ ์๋ค. ์ฝ๊ฒ ๋งํด, A๊ฐ B์๊ฒ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฑ ์์ B์๊ฒ ์์ํ๋ ๊ฒ์ ์๋ฏธํ๋ค. Delegate Pattern ์์ ์ดํด๊ฐ ์ ๋์ง ์๋๋ค๋ฉด ์ค์ํ๋ก ์๋ฅผ ๋ค์ด๋ณด๋ฉด ๋๋ค. ์ํํธ์จ์ดํ๊ณผ๋ MT.. iOS - 2023๋ ์ต์ iOS ๊ฐ๋ฐ ๋ํฅ๊ณผ ์ ๋ฐ์ดํธ (feat. WWDC 2023) 2023๋ iOS ์ฑ ๊ฐ๋ฐ ๋ํฅ๊ณผ ์ต์ ๊ธฐ์ ์ ๋ํด ๊ด์ฌ์ ๊ฐ์ง๊ณ ์์๋ณด๋ ค๊ณ ํ๋ค. ์ง๋ 6์์๋ WWDC 2023์์ Apple์ ๋ง์ ๊ธฐ์ ๊ณผ ์ ๋ฐ์ดํธ, ๊ทธ๋ฆฌ๊ณ ์ ์ ํ๊น์ง ๊ณต๊ฐ๋์๋ค. ์ฌ์ค ๋์๊ฒ ์ฒซ WWDC ๊ด๋์ด์๋๋ฐ ๋ค์ ํ ๋ฒ Apple์ ๋งค๋ ฅ์ ๋น ์ ธ๋ฒ๋ ธ๋ค. ์๋ง ์ ํ ์ํ๊ณ๋ฅผ ์ฌ๋ํ๋ ์ฌ๋๋ค๊ณผ ํจ๊ป ๊ด์ ์ ํด์ ๋ ํน๋ณํ๊ณ ๊ฐ์กฐ๋์๋ ๊ฒ ๊ฐ๋ค. ํนํ 9๋ ๋ง์ ๋ฐํ๋ Vision Pro๋ ์๋ง ๋ง์ ๋ถ๋ค์ด ์์ธกํ๊ณ ๊ธฐ๋ํ์ ๊ฒ ๊ฐ๋ค. Vision Pro๋ 3D ํ๊ฒฝ์์ ๊ฒฝํ์ ์์ ๋กญ๊ฒ ์์ํ๋ฉฐ ๋๋ฌ๋ณผ ์ ์๊ณ ์คํํ ์ ์๋ค. 1. iOS 17 Apple์ ๋งค๋ ์๋ก์ด iOS๋ฅผ ๋ฐํํ๋ค. ์ฌํด 2023๋ ์๋ iOS 17์ด ์ ๋ฐ์ดํธ ๋ ์์ ์ด๋ค. WidgetKit์ ํตํด ์ํธ์์ฉ ๊ธฐ๋ฅ ๋ฐ ์ ๋๋ฉ.. iOS - MVC(Model-View-Controller) ํจํด์ด๋ ๋ฌด์์ผ๊น? iOS ๊ฐ๋ฐ์์๋ ์ฌ๋ฌ ๊ฐ์ง ๋์์ธ ํจํด์ ์ฌ์ฉํ์ฌ ์ฑ์ ๊ด๋ฆฌํ๊ณ ๊ตฌ์กฐํํ๋ค. ๊ทธ ์ค ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๋ฉฐ ๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ MVC ํจํด์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค. MVC (Model - View - Controller) MVC๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์ด๋ค. ์ฑ์ ๊ตฌ์ฑ์ ์ธ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ก ๋๋์ด ์ค๊ณํ๋ค. Model : ์ฑ์ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ค. View : ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํ์ํ๊ณ ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ค. Controller : ๋ชจ๋ธ๊ณผ ๋ทฐ์ ์ฌ์ด๋ฅผ ์ค์ฌํด์ค๋ค. ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ค. Model ์ฃผ๋ก struct์ class๋ฅผ ๋ง๋ ๋ค. ์ฑ์ด ๊ฐ์ง๋ ๋ฐ์ดํฐ๋ค์ ๋ด๋นํ๋ค. ์๋ฅผ ๋ค์ด, ์ ํ๋ฒํธ๋ถ์ด๋ฉด ์ด๋ฆ, ์ ํ๋ฒํธ, ์์ ๋ฑ์ ์ ์ฅํ๊ณ ์ด๋ฅผ model์์ .. iOS - UIKit vs SwiftUI ์ ๋ํด์ (2) UIkit์ ๋ํด์ → 2023.07.16 - [iOS] - UIKit vs SwiftUI ์ ๋ํด์ - (1) SwiftUI ๋? ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI) ํ๋ ์์ํฌ๋ก, iOS, macOS, watchOS, tvOS ์ฑ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ ์ต์ UI ํดํท์ด๋ค. Swift ์ธ์ด์ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ์ ์ธ์ ๊ตฌ๋ฌธ์ ํ์ฉํ์ฌ UI๋ฅผ ๋น ๋ฅด๊ณ ๊ฐ๋จํ๊ฒ ๊ตฌ์ถํ ์ ์๋ค. UIKit์ ViewController์ Storyboard๋ฅผ ์ค์ฌ์ผ๋ก UI๋ฅผ ๊ฐ๋ฐํ๋ค. ์ธํฐํ์ด์ค ๋น๋๋ฅผ ์ฌ์ฉํด์ UI ์์๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ฐฐ์นํ๊ณ ์ฝ๋๋ก ์ด๋ฅผ ์กฐ์ํ๋ค. SwiftUI์ ์ฃผ์ ํน์ง๊ณผ ๊ธฐ๋ฅ (์์ ์ฝ๋) ์ ์ธ์ ๊ตฌ๋ฌธ SwiftUI๋ ์ ์ธ์ ์ธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ UI๋ฅผ ์ค๊ณํ๋ค. ์ฝ๋๋ก UI ์์๋ค์ ์ค๋ช ํ๊ณ ๊ตฌ์ฑํ๋ ๋์ , SwiftUI๋ .. iOS - UIKit vs SwiftUI ์ ๋ํด์ (1) SwiftUI์ ๋ํด์ → 2023.07.16 - [iOS] - UIKit vs SwiftUI ์ ๋ํด์ - (1) UIKit ์ด๋? iOS ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ ์์ํฌ์ด๋ค. Apple์์ ๊ฐ๋ฐํ UIKit์ iOS ๊ฐ๋ฐ์ ํต์ฌ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ฑ์ ํ๋ฉด ๊ตฌ์ฑ, ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ, ์ ๋๋ฉ์ด์ , ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฑ์ ๋ค๋ฃจ๋๋ฐ ํ์์ ์ธ ๋๊ตฌ๋ค์ ์ ๊ณตํ๋ค. UIKit์ ViewController์ Storyboard๋ฅผ ์ค์ฌ์ผ๋ก UI๋ฅผ ๊ฐ๋ฐํ๋ค. ์ธํฐํ์ด์ค ๋น๋๋ฅผ ์ฌ์ฉํด์ UI ์์๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ฐฐ์นํ๊ณ ์ฝ๋๋ก ์ด๋ฅผ ์กฐ์ํ๋ค. UIKit์ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ๊ตฌ์ฑ ์์ (์์ ์ฝ๋) UIView UIKit์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์ฑ ์์์ด๋ค. ํ๋ฉด์ ๋ณด์ด๋ ๋ชจ๋ UI ๊ฐ์ฒด๋ค์ ๊ธฐ.. ์ด์ 1 2 3 4 ๋ค์