Swift 5.1 에서 추가된 Opaque Types 의 Apple Docs 번역글입니다. 제 블로그에서 Swift 번역글이 스테디하게 인기가 좋길래 새로운 피처가 추가된 기념으로 한번 해보았습니다 :) 제 번역 포스트는 원문 그대로의 직역이 아닌 이해를 돕기 위한 의역, 부연설명이 되어 있으니 참고해주세요. 이번 문서는 최대한 이해에 도움이 되게끔 문장을 몇 번이나 고쳐썼습니다. 오역 발견 시 꼭 제보해주시면 감사하겠습니다. * 이 문서는 Swift 에서의 Protocol, Generic 에 대한 이해가 선행되어야 이해하실 수 있습니다. Opaque Types Opaque 리턴 타입(Opaque return type)을 가지는 함수/메소드는 자신의 리턴 타입에 대한 정보를 드러내지 않습니다. 함수의 리..
원문 Difference between DispatchQueue.main.async and DispatchQueue.main.sync 뜻을 이해하기 쉽도록 의역/추가설명을 붙인 부분들이 있습니다. Question 저는 그동안 UI 관련 동작을 수행하기 위해 DispatchQueue.main.async 를 계속 사용해왔습니다. Swift는 DispatchQueue.main.async 와 DispatchQueue.main.sync 를 제공해주며 둘 다 main queue 에서 수행됩니다. 두 개의 차이가 무엇인지, 언제 무엇을 사용해야 하는지 알려주실 분이 계신가요? DispatchQueue.main.async { self.imageView.image = imageView self.lbltitle.text ..
Robert C. Martin의 Clean Architecture 3부 '설계 원칙' 7-11장을 읽고 메모한 글입니다. 요약글은 아닙니다. 개인적인 의견도 포함되어 있으니 참고해주세요. 모든 예제코드는 Swift로 작성되었습니다. SOLID 원칙 개요 함수와 데이터 구조를 클래스로 배치하고 이 클래스들을 서로 결합하는 방법에 대한 원칙 SRP, OCP, LSP, ISP, DIP 목표 변경에 유연하게 가독성 재사용성 등등 7장. SRP (단일 책임 원칙) - Single Responsibility Principle - A class should have one, and only one, reason to change. - 하나의 모듈은 하나의 책임만 가진다 (*하나의 모듈은 하나의 일만 한다, 가 아님...
Robert C. Martin의 Clean Architecture 2부 '벽돌부터 생각하기: 프로그래밍 패러다임' 3-6장을 읽고 메모한 글입니다. 요약글은 아닙니다. 개인적인 의견도 포함되어 있으니 참고해주세요. 3장. 패러다임 개요 프로그래밍 패러다임이란 무엇인가? 사전에서의 패러다임 - 한 시대의 사람들의 견해나 사고를 근본적으로 규정하고 있는 인식의 체계. 또는, 사물에 대한 이론적인 틀이나 체계. 순화어는 '틀'. 프로그래밍 패러다임은 '프로그래밍에 대한 이론적인 틀이나 체계'. 프로그래밍을 하는 방법이라고 할 수 있다. 언제, 어디에 이 구조를 사용할지 결정하며, 따라서 대체로 언어에 독립적이다. 여기서는 다음 세 가지 프로그래밍 패러다임을 다룬다. 구조적 프로그래밍 (Structured Pr..
최근에 OOP에 대해 공부를 하다 혼란에 빠졌었는데, 나름 결론이 나서 기록. '나름' 결론이기 때문에 주의해주세요. 의견은 자유롭게 코멘트로 달아주세요. 혼란을 불러일으킨 요소 - 존 호프만의 스위프트와 프로토콜지향 프로그래밍 - Robert C. Martin의 클린 아키텍처 - bearkode님의 OOP 고민 영상 (https://youtu.be/dhK0ZQes4Do , 'OOP에 대해서 고민해보기') 혼란스러웠던 (고민에 빠졌던) 주제 - OOP에서의 Abstraction과 Polymorphism의 관계 혼란의 배경 1 https://wlaxhrl.tistory.com/category/POP with Swift 위 포스트에도 정리했듯, 최근 '스위프트와 프로토콜지향 프로그래밍' 책을 읽고 OOP와 ..
존 호프만의 Protocol-Oriented Programming with Swift(스위프트 프로토콜지향 프로그래밍) 1장에 대한 글입니다. 책의 내용을 기본으로 하고 있지만, 개인적으로 많은 고민을 하면서 쓴 글이기 때문에 그런 부분도 반영되어 있습니다. 참고해주세요. Polymorphosm, OOP, POP 객체지향 프로그래밍(OOP)과 프로토콜지향 프로그래밍(POP)을 살펴보기 전에 먼저 짚고 넘어가야 할 핵심개념이 있다. 그것은 바로 Polymorphism(다형성) Polymorphism이란, 간단히 말하면, 같은 인터페이스로 여러 타입과 상호작용할 수 있는 개념이다. (ex) 콜라(캔)와 오렌지주스(플라스틱병) 객체가 각각 있다고 할 때 - Polymorphism 적용 X: if 콜라캔 { 캔..
Robert C. Martin의 Clean Architecture 1부 1, 2장을 읽고 메모한 글입니다. 요약글은 아닙니다. 1장. 설계와 아키텍처란? 일반적으로 설계는 저수준, 아키텍처는 고수준의 구조나 결정사항을 가리킬 때 쓰이는 용어이다. 그러나 설계와 아키텍처 사이에는 근본적인 차이가 없다. 두 가지를 뚜렷하게 구분할 수는 없다. 고수준에서 저수준으로 향하는 의사결정이 연속적으로 이루어진다고 보는 것이 맞다. 소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화하는 데 있다. 즉, 비용은 최소화, 생산성은 최대화. 이 사항을 만족할 수 있다면 좋은 설계라고 볼 수 있다. 이런 설계(아키텍처)를 어떻게 할 수 있는지에 대해 앞으로 다룰 것이다. 2장. 두 가지..
Apple 제공 Swift 프로그래밍 가이드(4.2)의 Collection Types 부분을 공부하며 정리한 글입니다. 개인적인 생각, 이해를 돕기 위한 예제도 조금 들어가있습니다. 들어가며Swift 에서는 값을 저장하기 위한 세 가지 Primary Collection type 을 제공합니다. Array, Set, Dictionary 입니다.Array : 넣은 순서대로 저장되는 콜렉션Set : 값이 중복되지 않는 순서없는 콜렉션Dictionary : key-value 관계를 가지는 순서없는 콜렉션 이 콜렉션 타입들 역시 다른 상수 변수와 마찬가지로 type 체크에 엄격합니다. 즉 한번 저장할 값의 type 을 정하면 다른 type 의 값은 저장할 수 없습니다. (따라서 String, Int 같은 각기 다..
Apple 제공 Swift 프로그래밍 가이드(4.2)의 Strings and Characters 부분을 공부하며 정리한 글입니다. 개인적인 생각, 이해를 돕기 위한 예제도 조금 들어가있습니다. 들어가며String 은 문자열을, Character 는 문자를 저장할 수 있는 타입입니다. Swift 의 String 은 단순한 문법으로 다룰 수 있으며, 그럼에도 불구하고 빠릅니다. 특히 String 두 개를 연결할 때 + 연산자만 사용하면 되는데, 이 부분은 Objective-C 에 비하면 참 편해졌습니다.String 에 특정 상수/변수 등을 포함해야 할 때는 Objective-C 와 다르게 String Literal 안에 \(변수이름)을 넣어야 합니다. 이게 무슨 말인지는 String Interpolation..
Apple 제공 Swift 프로그래밍 가이드(4.2)의 Basic Operators 부분을 공부하며 정리한 글입니다. 개인적인 생각, 이해를 돕기 위한 예제도 조금 들어가있습니다. 들어가며Swift 는 표준 C 연산자를 대부분 지원합니다.Swift 의 연산자에는 코딩 오류를 미리 잡아주기 위한 몇 가지 특별한 점들이 있습니다. 다음은 그 예시 몇 가지입니다:할당 연산자( = )는 어떤 값도 return 하지 않는다. ( if 조건문 안에서 = 대신 == 를 사용하지 않도록 )산술 연산자( +, -, *, /, % 등 )는 오버플로우를 미리 감지하여 그런 연산을 허용하지 않는다. ( 연산결과가 저장될 변수에 오버플로우 값이 할당되지 않도록 )또한 Swift 에는 범위 연산자(range operator)인 ..