Swift
-
와일드카드 패턴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)..
-
소켓통신Swift 2021. 4. 19. 16:21
안녕하세요. 그린입니다🟢 이번 포스팅에서는 소켓통신에 대해 알아보고 swift에서는 어떻게 사용되는지 간단히 알아보겠습니다📝 소켓통신? - 네트워크를 통해 서버 클라이언트 두 부분에 링크 생성 후 해당 링크를 통해 데이터를 주고 받는 기술 - HTTP 통신인 Request / Response의 단점을 해결해줌 (데이터 요청을 계속 해야하는 단점..!) - 서버에서 포트번호 설정하면 클라이언트에서 해당 포트로 접속 시 연결됨 (연결되어 있어서 데이터가 들어오면 바로바로 처리 가능) - 스위프트에서는 socket.IO를 사용해 구현 - 연결지향적 통신 / 실시간 통신 (채팅 및 스트리밍 등) HTTP 통신과의 차이? - HTTP 통신은 클라이언트가 요청을 보낼때만 서버가 응답하고 그 과정이 끝나면 연결 종료..
-
Early ExitSwift 2021. 4. 13. 10:55
안녕하세요. 그린입니다🟢 저번 포스팅인 옵셔널 체이닝에 이어 관련된 Early Exit, 빠른종료에 대해 학습해보겠습니다🧑🏻💻 옵셔널 체이닝과 옵셔널 바인딩은 이해가 된 상태에서 빠른 종료의 키워드인 guard에 대해 알아보고 if와는 어떤 옵셔널 바인딩에서 차이가 있을지에 대해 배워보겠습니다🙌 Early Exit : 빠른종료로 if문에서는 else 구문이 없어도 되며 만약 else 구문이 있을때는 if와 else 구문 모두 구현을 해주며 분기를 해줍니다. 그러나 guard 구문은 꼭 else 구문이 있어야 됩니다. else 구문에서는 무조건 상위의 코드블럭을 종료시키는 제어문 전환 명령 혹은 그 구문을 탈출시킬 수 있는 비반환 함수 / 메서드 호출이 있어야 합니다. 제어문 전환 명령어 : return..
-
Optional ChainingSwift 2021. 4. 12. 19:33
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Optional Chaining 옵셔널 체이닝에 대해 학습해보겠습니다. 옵셔널 체이닝 (Optional Chaining) : 옵셔널 체이닝이란 옵셔널을 여러번 체인 처럼 사용하는 기술 -> 옵셔널 체이닝을 된 부분에서 값이 하나라도 nil이면 nil을 반환 옵셔널 체이닝의 사용 import Foundation class Camper { var nickName: String var description: Description? init(nickName: String) { self.nickName = nickName } } struct Description { var gender: Gender? var age: Int } class Gender { var gende..
-
GCD & OperationSwift 2021. 4. 9. 15:02
안녕하세요. 그린입니다🟢 이번 포스팅에서는 일전에 다룬바 있는 동시성 프로그래밍에서 GCD & Operation에 학습해보겠습니다. 이전보다 전체적인 개념에 대한 학습은 같지만 조금 더 심화된 내용이라고 보면 될것 같습니다☺️ 우선 동시성 프로그래밍에서 중요한 비동기에 대해 조금 짚고 넘어가보겠습니다. 동시성 프로그래밍을 할때 가장 중요한 부분이 각 스레드별로 비동기적으로 일을 처리하게 해주는 부분입니다. 그래서 각 일을 기다렸다 하지 않고 동시에 처리하도록 만들어줍니다. 왜 작업을 비동기로 처리해야될까? : 비동기로 처리를 해주는 경우는 굉장히 많습니다. 예를들어 네트워크 작업들은 디폴트가 비동기입니다. 흔히 보는 테이블 및 컬렉션뷰에서 이미지를 서버에서 받아 뿌려주는 인스타그램들의 경우도 만약 비동기..