iOS (17) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [Combine] ๊ฐ์ ๋ฐ Publisher ์ Subscriber์ ๊ฐ๋ , Combine์ ์ฅ์ Combine์ ์๊ธฐ ์ ์, Functional Reactive Programming์ด ์ด๋ค ๋งฅ๋ฝ์์ ๋์๋์ง ์ดํดํ ํ์๊ฐ ์๋ค. ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ Low Memory → Mass Production → Concurrency ์ ๊ฐ์ ๋งฅ๋ฝ์ผ๋ก ๋ณํํด์๋๋ฐ. ํ์ฌ๋ Concurrency ๋จ๊ณ๋ก ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋์์ ์์ ์ด ์ด๋ฃจ์ด์ง๊ณ ์๋ ํจ๋ฌ๋ค์์ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ฌ๊ธฐ์ Side Effect๊ฐ ์์ ์๋ฐ์ ์์๊ณ , ๊ทธ๋ฌ๊ธฐ์ Pure Function์ ์ฌ์ฉํ๋ Functional ํจ๋ฌ๋ค์์ด ๋ํ๋ ์ ๋ฐ์ ์์๋ค.๊ทธ๋ฆฌ๊ณ async ํ ์ํฉ์์ asyncํ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ๊ฐ? ์ ๋ํ ๋๋ต์ผ๋ก stream ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํ๋ ค๋ณด๋ด์๋ Reactive Programming์ด ๋์ค๊ฒ ๋์๋ค.Comb.. VStack ์์์ ์ฌ๋ฌ ๊ฐ์ View๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํ์ง ์๋ ์ด์ ๊ถ๊ธ์ฆ์ด ์๊ฒผ๋คimport SwiftUIstruct ContentView: View { var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text("Hello, world!") } .padding() }}#Preview { ContentView()}import UIKitclass ViewController: UIViewController { override func viewDidLoad() { super.view.. ARC ์์๋ณด๊ธฐ ARC๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌiOS ์ ๊ฒฝ์ฐ ARC ๋ฅผ ์ฌ์ฉํ์ฌ, ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๋ค.ํ์์๋ ์ฃผ๋ก ํฌ๊ธฐ๊ฐ ํฌ๊ณ ์ค๋ซ๋์ ์ ์ฅ๋์ด ๊ด๋ฆฌํ ํ์๊ฐ ์๋ ๋ฐ์ดํฐ๋ค์ด ํ ๋น๋๋๋ฐ, ํ ๋น๋ ๋ฐ์ดํฐ๋ฅผ ํด์ ํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ค.๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ์ฒด์ ๊ฐ์ฒด๊ฐ ์๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ๊ฐํ ์ฐธ์กฐ ์ธ์ดํด์ด ๋ฐ์์ ํ์ฌ, ํ์ ์ฌ๋ผ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํด์ ์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ์ง ์๋๋ค.๊ทธ๋์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด weak ์ unowned ์ด๋ค.๊ณตํต์ ๊ฐ๋ฆฌํค๋ ๋ ํผ๋ฐ์ค ์นด์ดํ ์ ์ฌ๋ฆฌ์ง ์๋๋ค๋ ์ ์ฐจ์ด์ weak๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ง๋ฉด nil ์ ์๋์ผ๋ก ํ ๋นํ๋ค.nil์ ํ ๋นํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์, var ๋ก ์ ์ธํด์ผ ํ๋ฉฐ, ๋ฌด์กฐ๊ฑด optional ์ด์ด์ผ ํ๋ค.unowned๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ ธ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์์.. Struct / Class ๋ ๋ฌด์์ธ๊ฐ? Struct๊ตฌ์กฐ์ฒด์ ๊ฒฝ์ฐ ๊ฐ ํ์ ์ด๋ค. ๊ฐ ํ์ (Value Type) ์ ํด๋น ํ์ ์ ์ธ์คํด์ค๊ฐ ๋ณต์ฌ๋ ๋ ์ธ์คํด์ค์ ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ณต์ฌ๋๋ค. ์ด๋ ํ๋์ ์ธ์คํด์ค๋ฅผ ์์ ํ๋๋ผ๋ ๋ค๋ฅธ ๋ณต์ฌ๋ณธ์ ์ํฅ์ ๋ฏธ์น์ง ์๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ฐ์ ์ ์ฅ์ ์คํ์์ ์ผ์ด๋๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ์์ ์๋์ผ๋ก ์ ๊ฑฐ๋๋ค. ํด๋น ์ธ์คํด์ค๋ฅผ let์ผ๋ก ์ ์ธ ์ ์ ์ฅ ์์ฑ์ด ์ ๋ถ ์์๋ก ์ ์ฅ๋๋ค. ๋ ๋ฉค๋ฒ์์ด์ฆ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์๋์ผ๋ก ์ ๊ณตํ๋ฉฐ, ๋ฉ์๋ ๋ด์์ ์์ฑ ๋ณ๊ฒฝ์ด ์์น์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ค. ๋ค๋ง mutating ํค์๋๋ก ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๊ธด ํ๋ค. ์๋ฉธ์๋ ์กด์ฌํ์ง ์์ผ๋ฉฐ ์์์ด ๋ถ๊ฐ๋ฅํ๋ค.struct Student { var name: String var gender: String init(name: String, gender: Str.. Design Pattern in Swift [ ์์ฑ ํจํด ] 1) ๋น๋ ํจํด (Builder Pattern) - ์ด๋ค Product ์ ์ด๋ฅผ ๋ง๋๋ Builder๋ก ๊ตฌ์ฑ - ์ด ํจํด์ Swift์ ๊ทธ๋ ๊ฒ๊น์ง ์ ํจํ ํจํด์ ์๋ -> ๋๋ถ๋ถ ์ด๊ธฐํ ๋ฉ์๋์ ํ๋กํผํฐ ๊ธฐ๋ณธ๊ฐ์ ํ์ฉํ์ฌ ํด๊ฒฐ ๊ฐ๋ฅ - ํ๋กํผํฐ์ ๊ฐ์๊ฐ ๊ต์ฅํ ๋ง์์ง๊ณ ๋ณต์กํด์ง๋ ๊ฒฝ์ฐ์ ์ ์ฉ struct MacBook { let color: String let memory: Int let storage: String let hasTouchBar: Bool } class MacBookBuilder { private var color = "Space Gray" private var memory = 16 private var storage = "256GB" private var hasTouchBar = fal.. 22.07.21 ใ ฃ ViewController Transition(ํ๋ฉด์ ํ) & Optional Binding(์ต์ ๋ ๋ฐ์ธ๋ฉ) & ์ธ์คํด์ค ํ๋กํผํฐ vs ํ์ ํ๋กํผํฐ ViewController Transition - Present - Dismiss (a.k.a Modal) Present - Dismiss ๋ ์ธํฐํ์ด์ค ๋น๋ ์์์๋ Modal ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ํ๋ฉด์ ํ ๋ฐฉ์์ ๋๋ค. ๋ฐ๋ผ์ ์๋์์ ์, ์์์ ์๋๋ก ํ๋ฉด์ ํ์ด ์ผ์ด๋๋ค๊ณ ์์ธกํด๋ณผ ์ ์์ต๋๋ค. ์ฐ์ ๊ทธ ์ค์์ Present๋ฅผ ๊ตฌํํ ์ ์๋ ์ฝ๋๋ฅผ ์์๋ด ์๋ค. ์ฐ์ ๊ฐ์ฅ ์ค์ํ ์ง์ ์ ์ ์ฝ๋์์ ์ฃผ์์ ๋จ 1๋ฒ, 2๋ฒ, 3๋ฒ์ ๋๋ค. 2.5๋ฒ๊ณผ ๊ฐ์ ๋ถ๋ถ์ ํ์์ ๋ฐ๋ผ ์ถ๊ฐํ๋ฉด ๋์ง๋ง, ํ๋ฉด์ ํ์ ๊ตฌํํ ๋์๋ ๋ฐ๋์ 1๋ฒ, 2๋ฒ, 3๋ฒ์ ์ ์ด์ฃผ์ด์ผ ํฉ๋๋ค. ์ ์ฝ๋์์๋ present ๋ฐฉ์์ style๋ฅผ fullscreen์ผ๋ก ํ๊ธฐ ๋๋ฌธ์, ์ ํ๋ ํ๋ฉด์๋ ํ๋ฉด์ ๋ซ์ ์ ์๋ ๋ฒํผ์ด ์์ผ๋ฏ๋ก bar .. 22.07.20 ใ ฃ UICollectionViewController & Struct ๊ตฌ์กฐ์ฒด ํ์ฉ UICollectionViewController UICollectionViewController ๋ ์์ ๊ฐ์ ํํ์ ์ฌ์ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ Controller ์ ๋๋ค. ์์ ๊ฐ์ ํํ์UICollectionViewController๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ UICollectionViewFlowLayout ์ ๊ฐ๋ ์ด ์ฌ์ฉ๋ฉ๋๋ค. - itemSize layout.itemSize = CGSize(width: width/2, height: width/2) ์์ ๊ฐ์ด ๊ธฐ๋ณธ์ ์ธ ์์ดํ ์ ์ฌ์ด์ฆ๋ฅผ ์ด๊ธฐํํ ๋ ์ฌ์ฉ๋๋ ์ฝ๋์ ๋๋ค. - minimumLineSpacing minimumLineSpacing ๋ cell ์ ํฌ๊ธฐ๊ฐ ๋ค์ํ ๋ ์ต์ํ ์ด ์ ๋๋ ๋จ์ด์ ธ ์์ด์ผ ํ๋ค๋ ๊ฐ๋ ์ ๋๋ค. - minimumInteritemSp.. 22.07.18 - 19 ใ ฃ Enum CaseIterable & Table View Enum CaseIterable Enum์ ํ์ฉํด ์ด๊ฑฐํ ํ์ ํ๋กํผํฐ์ธ allCases๋ฅผ ํ์ฉํ์ฌ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋จ์ ๋ฐฐ์ด์ ์ฌ์ฉํ ๋๋ณด๋ค ์ฝ๋๋ฅผ ํจ์ฌ ๋ ์ง๊ด์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. Table View ๋ค์์ Table View Controller ์ ๊ผญ ์์ฑํด์ผ ํ๋ ์ฝ๋์ ๋๋ค. ์ฐ์ Table View ๋ Section / Row / Cell ๋ก ์ด๋ฃจ์ด์ ธ์๊ธฐ ๋๋ฌธ์, ๊ฐ๊ฐ์ด ๋ช ๊ฐ์ Section์ด๋ Row๋ก ์ด๋ฃจ์ด์ ธ ์๋์ง ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ฝ๋์ ๊ฒฝ์ฐ ํ๋์ Section ์์ ๋ฐฐ์ด ๋ด ์์์ ๊ฐ์๋งํผ Row๊ฐ ์๋ ๊ตฌ์ฑ์ ๋๋ค. - TableViewCell Reuse Mechanism (์ฌ์ฌ์ฉ ๋ฉ์ปค๋์ฆ) ์ฌ์ฌ์ฉ ๋ฉ์ปค๋์ฆ์ด๋, Table Vi.. ์ด์ 1 2 3 ๋ค์