Swift
-
ReactorKit으로 계산기 구현하기Swift 2021. 7. 5. 21:48
안녕하세요. 그린입니다🟢 이번 포스팅에서는 ReactorKit으로 계산기를 구현해보겠습니다🧑🏻💻 우선 이번 계산기 프로젝트 같은 경우에는 ReactorKit으로 어느정도 정형화된 리액트 MVVM 아키텍쳐 패턴을 따릅니다. 여기 포스팅에서는 필수 파일에 대한 구현들만 간단히 소개하고 아래 제 Git 레포 주소를 남겨두겠습니다! 더 참고하실 분들을 Git을 참고해주세요👍🏻 1. View - 뷰는 우선 스토리보드로 UI요소 배치와 오토레이아웃을 적용했습니다. - 그 후 ViewController에서 ReactorKit을 임포트하고 스토리보드뷰를 채택하여 리액트와 바인딩될 수 있게 구현하였습니다. import UIKit import ReactorKit import RxCocoa class CalculatorV..
-
진수 변환Swift 2021. 5. 27. 11:29
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Swift에서 진수 변환하는 방법에 대해 학습하겠습니다🧑🏻💻 진수란? 얼만큼의 수를 증가시킨 후 자릿수를 올릴 것인지에 대한 단위를 말합니다. 즉, 2진수는 2개의 수를 사용하고 8진수는 8개의 16진수는 16개의 수를 사용합니다. 잘 알고 계시겠지만 기본적으로 실생활에서는 10진수 즉 10개의 0~9까지의 수를 사용하여 나타냅니다. 그렇다면, 각 진수 표현이 다른데 왜 알아야 할까요? 특히 2진수는 컴퓨터가 나타낼 수 있는 수의 범위로 2진수를 10진수로 10진수를 2진수로 변환하는 방법과 이해하는것이 중요합니다. 대표적으로 가장 많이 사용되는 2진수, 8진수, 10진수, 16진수에 대해 알아보고 각 변환하는 방법에 대해 알아봅시다! // MARK: - 진수..
-
Deep copy & Shallow copySwift 2021. 5. 25. 17:47
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Deep copy(깊은 복사)와 Shallow copy(얕은 복사)에 대해 학습해보겠습니다🧑🏻💻 본격적으로 알아보기전! 기본적으로 모든 데이터 타입은 값 혹은 참조 타입을 가지는건 알고 계시죠? 간단히 두 타입에 대해 설명해보자면, 값 타입으로 생성된 데이터는 각각 해당하는 메모리를 따로 소유합니다. 참조 타입으로 생성된 인스턴스는 주소를 공유하여 같은 주소를 참조한 값이 바뀌면 같이 변경됩니다. 이 두 차이를 통해 깊은 복사와 얕은 복사에 대해 어떨때 일어나고 어떻게 사용할지 알아봅시다👍🏻 Deep copy : 깊은 복사로 데이터를 그대로 복사하여 복사된 두 데이터 객체는 각각의 메모리를 가집니다. : 주로 기본적으로 값 타입의 객체들을 생성하면 깊은 복사로..
-
패턴 (식별자, 값 바인딩, 튜플)Swift 2021. 5. 19. 16:35
안녕하세요. 그린입니다🟢 이번 포스팅에선 저번 와일드 패턴에 이어 값을 추출하거나 무시하는 패턴의 나머지 3개에 대해 알아보겠습니다🧑🏻💻 식별자 패턴 (Identifier Pattern) : 변,상수의 네이밍에 해당하는 값을 매칭시키는 패턴 let name: String = "GREEN" 네임이라는 상수가 그린이라는 문자열 값의 식별자가 됩니다. 때에 따라 식별자 패턴이 값 바인딩 패턴의 한 종류가 되기도 합니다. 값 바인딩 패턴 (Value-Binding Pattern) : 변,상수의 네이밍에 매칭된 값 바인딩 let person = ("GREEN", 10) switch person { case let (name, age): print("\(name), \(age)") } switch person {..
-
와일드카드 패턴Swift 2021. 5. 18. 15:07
안녕하세요. 그린입니다🟢 이번에는 와일드카드 패턴에 대해 알아보겠습니다🧑🏻💻 우선 패턴부터 어떤건지 알아보도록 하죠! 패턴(Pattern) : 단독 혹은 복합적인 값을 구조화하여 나타내는 것으로 코드에서 이러한 패턴을 찾도록 비교하는것을 패턴매칭이라 합니다. 패턴의 종류 1) 값 추출 및 무시하는 패턴 - 와일드카드, 바인딩, 튜플, 식별자 2) 패턴매칭을 위한 패턴 - 열거형 케이스, 타입캐스팅, 옵셔널, 표현 여기서 이번 포스팅에서는 값을 무시하는 패턴인 와일드카드 패턴에 대해 보겠습니다. 와일드카드 패턴(Wildcard Pattern) : _ 식별자를 사용하여 해당 위치에 어떤 값이 와도 무시하고 항상 실행되게 하는 패턴 코드를 통한 와일드카드 패턴 사용🖥 class WildCardPattern ..
-
개념 자문자답Swift 2021. 4. 29. 11:28
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Swift와 iOS 개발을 하며 몇가지 헷갈렸거나 하는 일부 개념들에 대한 자문자답을 해보겠습니다🧑🏻💻 MVC의 단점을 보안하기 위해 나온 아키텍쳐 패턴? (MVVM) - MVC: 모델 뷰 컨트롤러 각각을 분리하여 의존성을 없애려 했는데 뷰와 컨트롤러에서도 소통을 하는 의존성이 생길 수 있어 재사용성이 낮아지는 문제 - MVP: MVC와 동일한 개념으로 C대신 P 프레젠터로 변경된것으로 결국 MVC와 마찬가지로 뷰/프레젠터 사이 의존성 문제가 나타남 - MVVM: 위 2개 아키텍쳐 패턴의 단점을 극복하고자 나와 이벤트 흐름이 뷰 -> 뷰모델 -> 모델로 이뤄져있어 Command패턴과 Data Binding을 통해 의존성을 제거 타입 캐스팅 및 디이니셜라이저는 ..
-
ResultSwift 2021. 4. 28. 20:36
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Result 타입에 대해 알아보겠습니다🧑🏻💻 Result? - 성공 / 실패에 대한 정보를 담는 제네릭 열거형 타입 - 옵셔널과 유사하지만 값이 없지가 않음 (실패 케이스에도 오류에 대한 정보 존재) Result 분석 @frozen public enum Result where Failure : Error { /// A success, storing a `Success` value. case success(Success) /// A failure, storing a `Failure` value. case failure(Failure) //... } - @frozen: Objective-C에서 건너온 Enum에 새로운 케이스가 업데이트 되지 않는것을 보장되는 키워..
-
Closure 심화Swift 2021. 4. 27. 18:11
안녕하세요. 그린입니다🟢 이번 포스팅에서는 클로저의 심화편으로 Completion Handler / Escaping Closure / Auto Closure에 대해 알아보겠습니다. Completion Handler - 어떤 상황에서 일이 끝났을때 진행할 업무를 담당 - 컴플리션 핸들러에 클로저를 적용시켜볼 수 있음 Completion Handler에서의 클로저 축약 과정 1. VC.present(secondVC, animated: true, completion: { () in print(“화면 이동”) }) 2. VC.present(secondVC, animated: true, completion: { print(“화면 이동”) }) 3. VC.present(secondVC, animated: true)..