λ€μ΄κ°λ©° βοΈ κΈ°μ΄ λ¬Έλ² κ³΅λΆμ νμμ±μ λκ»΄μ μ΄μ¬μΌλ‘ λμκ° μ‘°κΈμ© 곡λΆνλ €κ³ νλ€. μ§κΈ 곡λΆνκ³ μ νλ κ²λ€μ΄ λ¨μ μ λ¦¬κ° λμ§ μλλ‘ κ³μ κ³ λ―Όνκ³ μ°κ΅¬νλ μμΈλ₯Ό κ°μ§λλ‘ νμ. κΈ°μ΄λ κ°μ₯ μ¬μμκ° μλλΌ κ°μ₯ μ€μν΄μ κ·Έ μλ―Έκ° μμμ κΉ¨λ«μ. ifλ¬Έ ππ»βοΈ νΉμ 쑰건μμλ§ μ½λλ₯Ό μ€νν΄μΌ νκ±°λ λλ μ€ννμ§ λ§μμΌ νκ±°λ νλ μν©μμ μ°μΈλ€. λ§ κ·Έλλ‘ μ‘°κ±΄μ λ°λΌ λ€λ₯Έ μ²λ¦¬λ₯Ό ν΄μ£Όκ³ μΆμ λ μ¬μ©νλ€. νλμ νλ‘κ·Έλ¨μ λ§λ€λ€ 보면 μ λ§ νμμ μΌλ‘ 쑰건문μ μ¬μ©ν΄μ 쑰건μ λ°λ₯Έ μ²λ¦¬λ₯Ό ν΄μ£Όλ μν©μ΄ λ°μνκΈ° λλ¬Έμ νμμ μΌλ‘ μκ³ μμ΄μΌ νλ λ΄μ©μ΄λ€. μ€μν 건 ifλ¬Έμ μ¬μ©ν μ μλ μν©μμ switch-caseλ¬Έμ μ¬μ©ν μ μλ€λ κ²μΈλ° μ΄λ»κ² μ½λλ₯Ό μμ±ν΄μΌ ν μ§λ μ ..
swift
π₯ μΈμ¬λ§ μλ
νμΈμ, νλΌμ
λλ€ γ° π λ€μ μΉ΄ν
κ³ λ¦¬μμλ λͺ¨λ₯΄λ κ°λ
μ΄λ ν€μλ, λ¬Έλ² λ± λ€μν λ΄μ©μ μ 리ν©λλ€. λ€μ λ΄μ©μ μ μ μΈμ€ν κ°λ° λ‘κ·Έ κ³μ (@taekki.dev)μλ μ¬λΌκ°λ λ§μ κ΄μ¬ λΆνλλ €μ :) κ°λ
μ λΉκ³΅κ°μ λ©κΏ μ μλ κ·Έλ κΉμ§ νμ΄ν
ν΄λ³΄κ² μ΅λλ€. κ·ΈλΌ μ€λ ν¬μ€ν
μμν΄λ³΄κ² μ΅λλ€. π π¬ λ€μ΄κ°λ©° UIWindowλ₯Ό μ²μ λ§μ£Όνκ±°λ, κ°μ₯ λ§μ΄ 보λ κ³³μ΄ μ΄μ©λ©΄ SceneDelegate.swift λ AppDelegate.swift μΌμ§λ λͺ¨λ¦
λλ€. νμ κ°λ³κ² μ§λμΉκΈ°λ§ νλ UIWindowκ° λ¬΄μμΈμ§ μ΄λ²μ μμλ³΄κΈ°λ‘ νμ΅λλ€. μ΄λ² κΈμ Apple 곡μλ¬Έμμ ꡬ쑰λ₯Ό λ°νμΌλ‘ ꡬμ±νμ΅λλ€. π± UIWindowμ νμ
π νμ
(Type) - ν΄λμ€ νμ
μ ν΄λμ€(Cl..
πμ€λμ κ°λ¨νκ² Delegate Patternμ μ μ©ν΄λ³΄λ μμ μ€μμ νλ©΄ μ ν μ λ°μ΄ν°λ₯Ό λ΄μ보λ΄λ μμ
μ ν΄λ³΄κ² μ΅λλ€. π§π»π» λ€μ΄κ°λ©° Delegate Pattern(π? π??), νμ 곡λΆνλ©΄μ κ·Έ μκ°μλ μ΄ν΄νκ³ λΆλͺ
μκ² λλ° λλ체 μ΄λ λΆλΆμ · λ μΈμ μ¬μ©ν΄μΌ νλμ§ κ°μ΄ μ μ‘νλλ€... μ μμλ κ·Έλ°λ°μ... μ΄μ© μ μμ΄μ... λ€μν μν©μ μ¨λ³΄λ €κ³ λ
Έλ ₯ν΄λ³΄λ μ λ°μ μ΄λ²μ μ΅λν μ¬λ¬ μν©μ μ¬μ©ν΄λ³΄λ©΄μ μ΄λ€ μ₯λ¨μ μ΄ μλμ§λ μμλ³΄κ³ μ¬μ©λ²μ μ΅μν΄μ§λ €κ³ ν΄λ³΄κ² μ΅λλ€. κ°μ΄ λ
Έλ ₯ν΄λ³΄μμ. πΊ μ€ν νλ©΄ μ€λ ꡬνν΄ λ³Ό νλ©΄μ λ€μκ³Ό κ°μ΅λλ€. ν¬κ² μν νλ©΄κ³Ό μ₯λ°κ΅¬λ λ΄κΈ° νλ©΄ 2κ°μ§λ‘ ꡬμ±λμ΄μꡬμ. μ°μ νλ¦μ μ€λͺ
ν΄λ릴κ²μ. μν νλ©΄μμ μ₯λ°κ΅¬λ λ²νΌμ ν΄..
μλ
νμΈμ, νλΌμ
λλ€. μ΄λ² κΈμ μ 리ννλ‘ μμ±ν΄λμ΄ μ΄ν¬κ° μ‘°κΈ λ±λ±ν μ μμ΅λλ€.. μ΄ν΄λΆνλλ €μ π₯² μ΄λ² κΈμ μ΄ν¬λ λ±λ±νκ³ μ€κΈ νμμ΄λ€. λ무 μ΄λ ΅κ² μκ°ν νμκ° μλ κ°λ
μ΄λ€. λ¨μνκ² λ§μ보μ. μμ½ νλ‘ν μ½μμ μ¬μ©λλ μ λ€λ¦ Placeholderμ λλμ΄λ€. Associated Typeμ μλ typealiasμλλ°, Swift 2.2λΆν° Associated Typeμ΄λ ν€μλλ‘ λ°λμλ€. μ€λͺ
μμ λ κ°μ§ κ΄μ μμ 보면 λ΄μ©μ ν¬κ² μ΄λ ΅μ§ μλ€. μλμ μμλ‘ ν¨κ» μ΄ν΄ν΄λ³΄κ² λ€. μ°μ νλ‘μ νΈμ λν΄ μ κΉ μ΄ν΄ν΄λ³΄λ©΄, νλ‘μ νΈλ νμ¬ MVVM ν¨ν΄μ λ°λ₯΄κ³ μλ€. λ€μ νλ‘μ νΈμμλ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νλ ViewModelμ ꡬνν΄μΌ νλ€. λ³΄ν΅ κ° ViewControlle..
ν΄λΉ κΈμ μ¬μ©λ μμλ 2κ°μ§ κΈμμ κ°μ Έμμ΅λλ€. μΆμ²λ κΈ λ§μ§λ§μ μ μ΄λμμ΅λλ€. μ°Έκ³ νμ
μ κΈ μ½μ΄μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€ :) π¬ λ€μ΄κ°κΈ°μ μ κ²°λ‘ λΆν° λ§νκ³ μμνκ² μ΅λλ€. typealiasλ μ½λλ₯Ό μ’ λ κ°κ²°νκ² κ°λ
μ±μκ² μμ±νκΈ° μν΄μ μ¬μ©ν©λλ€. μΈμ μ¬μ©νλꡬμ? μ λ΅μ μμ΅λλ€. λ€λ§ μΌλ°μ μΌλ‘ μ¬μ©νλ κ²½μ°λ μμ£ . μ΄λ² κΈμμλ κ·Έ λΆλΆμ λν΄μ ν¨κ» μμ보λλ‘ νκ² μ΅λλ€. π typealiasλ typealiasλ νμ
μ λΆμΌ μ μλ λ³μΉ, μ½μΉμ
λλ€. typealias (μ¬μ©ν λ³λͺ
) = (μ‘΄μ¬νλ νμ
) ex) typealias Nickname = Int ex) typealias Codable = Decodable & Encodable ex) ... typealiasλ μ..
μλ
νμΈμ, νλΌμ
λλ€~ μ€λμ Convenience initializerκ° λ¬΄μμΈμ§ μμλ³΄κ² μ΅λλ€! μ΄λμ
λΌμ΄μ λ ν¬κ² 2κ°μ§λ₯Ό μ΄ν΄λ³Ό μ μμ΅λλ€. Designated initializer, Covenience initializer μ°¨λ‘λλ‘ μ§μ μ΄λμ
λΌμ΄μ , νΈμ μ΄λμ
λΌμ΄μ λΌκ³ ν΄μν΄λ³Ό μ μλλ°, μ§μ μ΄λμ
λΌμ΄μ λ ν΄λμ€(ꡬ쑰체)λ΄μ λͺ¨λ νλ‘νΌν°κ° μ΄κΈ°νλ μ μλλ‘ ν΄μ£Όλ μ΄λμ
λΌμ΄μ μ΄κ³ , νΈμ μ΄λμ
λΌμ΄μ λ μΆκ°μ μΈ μμ
μ ν μ μλλ‘ ν΄μ£Όλ 보쑰 μ΄λμ
λΌμ΄μ μ
λλ€. Designated init μ νλΌλ―Έν° μΌλΆλ₯Ό κΈ°λ³Έκ°μΌλ‘ μ€μ ν΄μ Convenience init μμμ Designated init μ νΈμΆν΄μ μΈ μ μμ΅λλ€. μ€μν ν¬μΈνΈλ λ€μκ³Ό κ°μ΅λλ€. Convenience i..
μλ
νμΈμ, νλΌμ
λλ€ :) μμ¦μλ ν λ¨κ³ λ μ±μ₯νκΈ° μν΄μ λ€μ κΈ°μ΄λΆν° μ°¨κ·Όμ°¨κ·Ό 곡λΆνλ μ€μ
λλ€. νμ€ν 곡λΆλ₯Ό νλ€λ³΄λ μ΄μ μ μ무 μκ°μμ΄ μμ±νλ μ½λλ κ°λ
λ€μ΄ λμ ν λλλΌκ΅¬μ... μκ³ μ¬μ©νλκ±°λ λͺ¨λ₯΄κ³ μ¬μ©νλκ±°λμ μμ μμ²λ μ°¨μ΄μ΄κΈ° λλ¬Έμ νμ κΈ°μ΄λΆν° ννν ν©μλ€... (κ·Όλ° κΈ°μ΄λ§ 곡λΆνλ€λ³΄λ©΄ ν₯λ―Έκ° λ¨μ΄μ§λ건 μ¬μ€... κ·Έλ¬λκΉ μ μ ν μ리쑰리 μμμ£ ...? π) frame vs bounds μ€λμ frameκ³Ό boundsμ λν΄ μ 리ν κ±°μμ. μ κ·Όλ°, μμ½λ²μ μ΄λκΉ μμΈνμ§ μμλ μ΄ν΄ν΄μ£ΌμΈμ... κΌΌκΌΌν μ€λͺ
λ²μ μ λμ€μ... μ°μ λ€ μ΄ν΄νκ³ λμ μ 리λ₯Ό ν΄λ³΄λ©΄ frameκ³Ό boundsμ μ°¨μ΄λ λ€μ 3κ°μ§λ‘ μ 리ν μ μμ κ² κ°μ΅λλ€. μ’νκ³μ λν μ°¨..
μ°λ¦¬λ μ΅μ
λμ λν΄ λ¬Όμμ λ, μΌλ§λ μ λλ΅ν μ μμκΉ? Summary μ΅μ
λμ λ³μμ κ°μ΄ μμ μλ μκ³ , μμ μλ μλ μν(nil)λ₯Ό νννκΈ° μν΄ Swiftμ λμ
λ κ°λ
μ
λλ€. μ΅μ
λμ Enum ννλ‘ μ μλμ΄ μκ³ , κ°μ μκ³ μμμ κ° Caseλ‘ κ°μ§κ³ μμ΅λλ€. μ΅μ
λλ‘ ννλ κ°μ μ κ·Όνλ λ°©λ²μΌλ‘λ Forced Unwrapping(κ°μ μΈλν), Optional Binding(μ΅μ
λ λ°μΈλ©), Nil-Coalescing Operator(Nilλ³ν©μ°μ°μ)κ° μμ΅λλ€. μ΅μ
λ 체μ΄λμ ν΅ν΄μ μ΅μ
λ λ°μΈλ©μΌλ‘ ννλ μ½λλ₯Ό κ°κ²°νκ² μμ±ν μ μμ΅λλ€. μ΅μ
λ(Optional) λλ λ
μ μ΅μ
λμ μλ―Έ μ μ°λ¦¬λ κ·Όλ³Έμλ κ°λ°μμ΄κΈ° λλ¬Έμ Apple 곡μ λ¬Έμλ₯Ό 보λλ‘ νμ£ . (..