π iOS (38) μΈλ€μΌν 리μ€νΈν [Architecture] MVC, MVP, MVVM μν€ν μ² ν¨ν΄ μλ νμΈμπ μ€λμ μν€ν μ² ν¨ν΄ λͺκ°μ§μ λν΄ μ 리ν΄λ³ΌκΉ ν©λλ€! μν€ν μ²μ λν΄ κ³΅λΆν΄μΌκ² λ€κ³ μκ°ν μ΄μ λ MVC ν¨ν΄μΌλ‘ κ°λ°νλ©° VCκ° λͺ¨λ μν μ λ΄λΉνλ€λ³΄λ μ μ 무거μμ§λ κ²μ λκΌκ³ .. μ΄λ¬ν MVC ν¨ν΄μ λ¨μ μ λν λμμΌλ‘ MVVM ν¨ν΄μ΄ μλ€λ κ²μ μκ² λμμ΅λλ€. κ·Έλμ μ΄λ² ν¬μ€ν μμ MVC, MVP, MVVM μν€ν μ² ν¨ν΄μ λν΄ μ°¨μ΄μ μ μμ£Όλ‘ μ 리ν΄λ³΄λ €κ³ ν©λλ€! μν€ν μ² ν¨ν΄μ΄λ? λ¨Όμ , μν€ν μ² ν¨ν΄μ΄λ 무μμΌκΉμ? μν€νΌλμμ λ°λ₯΄λ©΄, μν€ν μ² ν¨ν΄μ΄λ, μ£Όμ΄μ§ μν©μμμ μννΈμ¨μ΄ μν€ν μ³μ 곡ν΅μ μΈ λ°μ λ¬Έμ μ λν μΌλ°μ μΈ, μ¬μ¬μ© κ°λ₯ν ν΄κ²°μ± μ μλ―Ένλ€. μν€ν μ² ν¨ν΄μ μννΈμ¨μ΄ λμμΈ ν¨ν΄κ³Ό μ μ¬νμ§λ§ λ ν° λ²μ£Όμ μνλ€. κ°λ¨ν λ§νλ©΄, μν€ν μ² ν¨.. [Swift] if letκ³Ό guard letμ μ°¨μ΄ μλ νμΈμ μ μΈμ λλ€!π μ€λμ if letκ³Ό guard letμ μ°¨μ΄μ μ λν΄ νλ² μ 리ν΄λ³΄λ €κ³ ν©λλ€. Optional νμ μ λ³μλ₯Ό μ¬μ©ν λλ μ΅μ λ λ°μΈλ©μ ν΅ν΄ μμ νκ² κΊΌλ΄μ μ°λκ² μ λ§ μ€μνλ°μ! νμμ μ λ§ λ¬΄μμμ μΌλ‘ if letκ³Ό guard letμ μ¬μ©νκ³ μμλλ°, μ°Έμ¬μ€μΈ νλ‘μ νΈμμ νμμ΄ μ΄μ λν μ§λ¬Έμ λ¨κ²¨μ£Όμ΄μ λκ°μ μ°¨μ΄μ μ λν΄ νμ€ν μ 리νκ³ κ°λ €κ³ ν©λλ€π©π»π» 곡ν΅μ λ¨Όμ , λκ°μ 곡ν΅μ μ λν΄ μ§κ³ λμ΄κ°κ²μ! if letκ³Ό guard letμ 곡ν΅μ μΌλ‘ μ΅μ λ λ°μΈλ©μ΄λΌλ νΉμ§μ κ°μ§κ³ μμ΅λλ€. μ΅μ λ(Optional)μ κ°μ΄ μμ μλ, μμ μλ μμμ λνλ΄λ ννμ λλ€. μ΄λ λ³μλ μμ λ±μ κ°μ΄ μλ€λ κ²μ 보μ₯ν μ μμ, λ€μ λ§ν΄ λ³μ λ.. [Swift] Escaping Closure(νμΆ ν΄λ‘μ ) μ§λ ν¬μ€ν μμ ν΄λ‘μ (Closure)μ κΈ°λ³Έμ μΈ κ°λ μ λν΄ μ 리νμλλ°μ, μ΄λ² ν¬μ€ν μμλ Escaping Closureμ λν΄ μμ보λλ‘ νκ² μ΅λλ€!π ν΄λ‘μ μ λν΄ μ λͺ¨λ₯΄μκ² λ€λ©΄ μ§λ ν¬μ€ν μ λ³΄κ³ μ€μλ κ²μ μΆμ²λ립λλ€! [Swift] ν΄λ‘μ (Closure) μ΅κ·Όμ iOS μ€ν°λ μΉκ΅¬λ€κ³Ό ν¨κ» ν΄λ‘μ μ λν΄ κ³΅λΆν΄λ³΄μλλ°μ, λΈλ‘κ·Έμλ κ·Έ λ΄μ©μ νλ² μ 리ν΄λ³΄λ €κ³ ν©λλ€!π λ°μ΄ν° μ λ¬, μλ² ν΅μ λ± λ€μν μν©μμ μ μ©νκ² μ΄μ©κ°λ₯ν ν΄λ‘ janechoi.tistory.com Escaping Closureλ? escaping closureλ ν΄μ κ·Έλλ‘ νμΆ ν΄λ‘μ λΌκ³ λ λΆλ¦¬λλ°μ, λ§ κ·Έλλ‘ 'νμΆ κ°λ₯ν' ν΄λ‘μ λΌκ³ ν μ μμ΅λλ€. νμΆ..? μ΄λλ₯Ό νμΆν΄...? λΌλ μλ¬Έμ΄ λμ€.. [Swift] ν΄λ‘μ (Closure) μ΅κ·Όμ iOS μ€ν°λ μΉκ΅¬λ€κ³Ό ν¨κ» ν΄λ‘μ μ λν΄ κ³΅λΆν΄λ³΄μλλ°μ, λΈλ‘κ·Έμλ κ·Έ λ΄μ©μ νλ² μ 리ν΄λ³΄λ €κ³ ν©λλ€!π λ°μ΄ν° μ λ¬, μλ² ν΅μ λ± λ€μν μν©μμ μ μ©νκ² μ΄μ©κ°λ₯ν ν΄λ‘μ μ λν΄ μμλ΄ μλ€!! ν΄λ‘μ (Closure)λ? ν΄λ‘μ λ μΌμ κΈ°λ₯μ νλ μ½λλ₯Ό νλμ λΈλ‘μΌλ‘ λͺ¨μλμ κ²μ λ§ν©λλ€. μ€νκ°λ₯ν μ½λλΈλμ΄λΌκ³ λ ν μ μμ΅λλ€. ν¨μλ ν΄λ‘μ μ ν ννμ λλ€. (ν¨μλ μ΄λ¦μ΄ μλ ν΄λ‘μ ) ν΄λ‘μ λΌλ κ°λ μμ ν¨μκ° ν¬ν¨λλ κ²μ΄λΌκ³ ν μ μμ΅λλ€. → ν¨μ: Named Closure, μ΄μΈμ μΌλ°μ μΈ ν΄λ‘μ : (Unnamed) Closure ν΄λ‘μ λ μΌκΈκ°μ²΄μ νΉμ±μ κ°μ§κ³ μμ΅λλ€. κ·Έλ κΈ° λλ¬Έμ λ³μλ μμμ λμ νκ³ , λ°ν(return) κ°λ₯νλ©° νλΌλ―Έν°λ‘ λ°μ μ μ.. [Design Pattern] μ±κΈν€ ν¨ν΄(Singleton Pattern) μ΅κ·Ό νλ‘μ νΈμμ μ±κΈν€ ν¨ν΄μ μ¬μ©ν΄λ³΄κ² λμλλ°μ! μ±κΈν€ ν¨ν΄μ μ λλ‘ μκ³ μ°κ³ μ μ±κΈν€ ν¨ν΄μ λν΄ μ 리ν΄λ³΄λ €κ³ ν©λλ€. Singletonμ μ μ, μ¬μ©μ΄μ , μ¬μ©λ°©λ² μμΌλ‘ μ 리ν΄λκ°λ³΄λλ‘ νκ² μ΅λλ€! μ±κΈν€ ν¨ν΄(Singleton Pattern)μ΄λ? μννΈμ¨μ΄ λμμΈ ν¨ν΄μμ μ±κΈν΄ ν¨ν΄(Singleton pattern)μ λ°λ₯΄λ ν΄λμ€λ, μμ±μκ° μ¬λ¬ μ°¨λ‘ νΈμΆλλλΌλ μ€μ λ‘ μμ±λλ κ°μ²΄λ νλμ΄κ³ μ΅μ΄ μμ± μ΄νμ νΈμΆλ μμ±μλ μ΅μ΄μ μμ±μκ° μμ±ν κ°μ²΄λ₯Ό 리ν΄νλ€. μ΄μ κ°μ λμμΈ μ νμ μ±κΈν΄ ν¨ν΄μ΄λΌκ³ νλ€. [μΆμ²] μν€λ°±κ³Ό μ±κΈν€μ λμμΈ ν¨ν΄ μ€ μμ± ν¨ν΄μ ν΄λΉνλ λμμΈ μ νμΌλ‘, ν΄λμ€κ° μ¬λ¬ μ°¨λ‘ νΈμΆλλλΌλ λ± ν κ°μ²΄λ§ μμ±λκΈ° λλ¬Έμ κ°μ²΄λ₯Ό νλλ§ μμ±ν.. [iOS] UserDefaultsλ? μλ νμΈμ! ν°μ€ν 리 첫 κΈλ‘ UserDefaultsμ λν΄ μ°κ² λμλ€μ,, ν°μ€ν 리λ₯Ό κΎΈμ€ν μ¨λ³΄μλ μν΄ λ€μ§μ νλ©°..UserDefaultsμ λν΄ μμ보λλ‘ νκ² μ΅λλ€.. UserDefaultsλ?π€ λ¨Όμ , μ ν 곡μ λ¬Έμμλ UserDefaultsκ° μ΄λ»κ² μ μ λμ΄μμκΉμ?? μ± μ€ν μ λ°μ κ±Έμ³ key-value μμ μ§μμ μΌλ‘ μ μ₯ν μ μλ μ¬μ©μμ κΈ°λ³Έ λ°μ΄ν°λ² μ΄μ€μ λν μΈν°νμ΄μ€μ΄λ€. μ λλ‘ ν΄μν μ μμ κ² κ°λ€μ! μ±μμ μ¬μ©λκ±°λ νμν λ°μ΄ν°λ₯Ό μꡬμ μΌλ‘ 보κ΄νκΈ° μν λ°©λ²μΌλ‘λ λ€νΈμν¬ μλ² μ΄μ©, CoreData, UserDefaults λ±μ΄ μμ΅λλ€. μ΄ μ€ UserDefaults λ λ°νμ νκ²½μμ λμνλ©΄μ, μ±μ΄ μ€νλλ λμ κΈ°λ³Έ μ μ₯μ (default dat.. μ΄μ 1 2 3 4 5 λ€μ