Swift
-
Model-View-ViewModel(MVVM)Swift 2022. 4. 8. 15:58
안녕하세요. 저번 시간에는 MVP 패턴을 통해서 Controller의 역할을 줄이고, UIKit과 분리되어 테스트 가능한 Presenter를 만들어보았습니다. 하지만 여전히 해결하지 못한 문제가 남아있었죠.. 바로 Presenter가 View를 알고 있다는 사실입니다. 아무리 Protocol을 통해 참조를 하고 있더라도 View에 대한 Presenter의 종속성은 남아 있습니다. 이것마저 해결할 수 있는 방법이 있지 않을까요?? Presenter가 View를 모르게 하는 방법.. 사실 우리는 MVC를 공부하면서 비슷한 개념을 경험해봤습니다. 감이 오시나요?? 차근차근 알아보도록 하겠습니다. 1. MVC에서? MVC를 학습하면서 위의 그림을 모두 보셨을 겁니다. 위 그림에서 주목해서 봐야할 부분은 봐야 할..
-
Model-View-Presenter(MVP)Swift 2022. 4. 4. 20:41
안녕하세요. 지난 시간에는 MVC에 대해서 알아보았습니다. MVC 역시 선배 개발자 분들의 수많은 고민이 담긴 훌륭한 아키텍처였지만, 해결하지 못한 문제들이 존재했습니다. 1. Controller의 역할이 너무 커진다.(Massive View Controller..) 2. ViewController가 UIKit에 의존적이기 때문에 테스트하기 어렵다. 이러한 문제를 해결하기 위해서 고민한 결과 등장한 것이 바로 Model-View-Presenter(MVP)입니다. 1. MVP MVP는 Controller가 UIKit과 의존적이기 때문에 테스트가 어려우니 UIKit에 독립적이면서 Controller의 역할을 하는 객체를 만드는 게 어떨까라는데서 시작합니다. 구조는 다음과 같습니다. 얼핏 봐서는 MVC와 뭐가..
-
Model-View-Controller(MVC)Swift 2022. 4. 3. 17:55
안녕하세요. 오늘부터 아키텍처 패턴들에 대해서 하나씩 알아보도록 하겠습니다. 오늘은 그중에서 아마 가장 처음 접하게 될 Model-View-Controller, 즉 MVC에 대해서 살펴보겠습니다. 1. MVC https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html Model-View-Controller Retired Document Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer b..
-
Property WrapperSwift 2022. 3. 25. 23:55
안녕하세요. 요즘 SwiftUI에 대해서 학습을 하고 있는 와중에 @State니 @Binding이니 낯선 키워드들을 접하게 되었습니다. 그러고 보니 Combine을 사용하면서 @Published와 같은 Property Wrapper들을 사용하고 있었는데요. 오늘은 그 Property Wrapper에 대해서 알아보도록 하겠습니다. 1. Property Wrapper https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID617 Properties — The Swift Programming Language (Swift 5.6) Properties Properties associate values with a particular class, str..
-
SOLID 원칙Swift 2022. 1. 28. 17:45
안녕하세요. 오늘은 SOLID 원칙에 대해서 알아보도록 하겠습니다. https://en.wikipedia.org/wiki/SOLID SOLID - Wikipedia Object-oriented programming design principles This article is about the SOLID principles of object-oriented programming. For the fundamental state of matter, see Solid. For other uses, see Solid (disambiguation). In software engineering, SOLID is a mnemoni en.wikipedia.org SOLID 원칙은 프로그래머가 소프트웨어를 유지보수와 확장..
-
CodableSwift 2021. 12. 28. 16:49
안녕하세요. 저번 시간에는 NSCoding을 알아봤으니 오늘은 Codable에 대해서 알아보겠습니다. https://developer.apple.com/documentation/swift/codable Apple Developer Documentation developer.apple.com Codable은 공식문서에서 보이듯이 Decodable과 Encodable을 합친 프로토콜인데요. 워낙 두 프로토콜을 같이 쓰는 경우가 많다보니 아예 공식적으로 Codable을 만든 것 같아요. 설명을 보면 자기 자신으로 변환되거나 외부 표현으로 변환될 수 있는 타입이라고 하네요. 저희는 이 표현이 인코딩과 디코딩을 의미하는 것을 NSCoding을 학습하면서 배웠습니다. 그럼 Decodable과 Encodable을 알..
-
NSCoderSwift 2021. 12. 27. 15:28
안녕하세요. 오늘은 NSCoder에 대해서 알아보도록 하겠습니다. 아마 Custom View를 만들어보신 분들이라면 한 번쯤은 보신 친구일텐데요. CustomView에 생성자를 만들게 되면 이런 에러가 발생하시는 것을 보셨을 거에요. 아니 view만드는데 frame만 있으면 되는거 아닌가? 왜 이상한 실패가능한 생성자를 만들라는거지?? 라고 생각하고 그냥 Fix버튼 눌러서 fatalError를 작성하고는 했었는데요. 과연 저 함수가 왜 필요한지 도대체 NSCoder가 무엇인지 이번 기회에 알아보도록 하겠습니다. NSCoder https://developer.apple.com/documentation/foundation/nscoder Apple Developer Documentation developer...
-
escaping closure(탈출 클로저)Swift 2021. 12. 23. 14:58
안녕하세요. 오늘은 escaping closure에 대해서 알아보도록 하겠습니다. 그러기 위해선 먼저 closure에 대해서 알아야겠죠? closure는 특정 기능들을 하는 코드를 하나의 블럭이라고 보시면 될 것 같습니다. 저희는 이미 그런 기능을 하는 친구를 알고 있죠? 바로 함수입니다. 사실 함수도 closure의 일종입니다. Swift에서 closure는 1급 객체인데요. 이게 무슨 소리냐 다른 변수에 할당할 수 있고, 인자로 사용될 수 있고, 반환값으로 사용될 수 있다는 것을 의미합니다. // 변수에 할당 let plus: (Int, Int) -> Int = { a, b in return a + b } // 매개변수로 사용 func calculateTwoAndThree(formula: (Int, ..