전체 글 34

의존성이 뭐죠...? (Dependency, DI, DIP, IOC)

의존성 주입이라는 말은 Swift를 사용하는 iOS 개발에서만 나오는 용어는 아니다. 이는 객체 지향 프로그래밍에서 사용되는 언어이다. 매일 의존성이라고 말하고 있지만, 도대체 무엇인지 한마디로 정의하지 못하는 나 자신을 보면서 공부하게 되었다… 의존성이란? 의존성은 객체 지향의 세계에서 객체간의 협력을 하기 위해서 A라는 객체가 B라는 객체의 메서드를 호출하면, 의존성이 생기게 된다고 말한다. 또한, 다른 타입을 가지고 있어도 의존성이 발생한다고 한다. 즉, 의존성을 다른 객체를 건드는 것이다. 건드는 것의 의미는 파라미터로 다른 타입을 가지고 있거나, 리턴 타입으로 다른 타입을 가지고 있고, 지역 변수로 다른 타입의 인스턴스를 생성하는 것들이다. class A { let name = "" let B ..

CS/객체지향 2023.09.07

Combine (2)

지난 시리즈에 이어서 Combine을 공부해보려고 한다. 이전 시간에는 Publisher, Operators, Subscriber의 어떤 역할들을 하는지에 대해서 공부했다. 이번에는 Publisher와 Subscriber의 종류에 대해서 공부해보려고 한다. Publisher 지난 시간에 공부했던 것을 생각해보면 Publisher는 시간의 흐름에 따라서 변경된 데이터를 방출하고, 종료되는 시점을 알려준다고 하였다. 이런 점에서 우리는 이미 비슷한 친구들을 보았을 것이다. 바로 NotificationCenter, KVO라는 친구들이다. 이 친구들은 Publisher처럼 값이 변경될 때마다 비동기적으로 이벤트를 받았다. 하지만, 엄밀히 말하면, NotificationCenter는 내부적으로 Publisher ..

IOS/Swift 2023.09.07

OOP / SOLID 원칙

객체 지향 프로그래밍이란 객체 지향 프로그래밍은 프로그램을 어떻게 설계할지에 대한 일종의 개념이자 방법론이다. 이는 우리가 실생활에서 사용되는 모든 것들을 객체라고 하며, 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 구성하는 것을 말한다. 절차 지향 프로그래밍 VS 객체 지향 프로그래밍 절차 지향 정수기를 생각하면 조금 더 쉽게 다가오는 개념일 것이다. 정수기는 어떤 필터를 사용하여서 불순물을 걸러낼지에 대해서 많은 고민을 하게 된다. 정수기 처럼 절차 지향 프로그래밍은 어떤 절차로 프로그래밍을 실행시킬 것인가에 대해서 고민하고, 프로그래밍의 중점적인 과제로 바라보는 것이라고 생각이 들었다. 객체 지향 우리가 일상생활에서 대화를 하기 위해서 사..

CS/객체지향 2023.09.07

Combine (1)

대체로 Combine 프레임워크에서 세가지의 핵심 요소가 존재한다. 이들은 Publisher Operator Subscribers 이다. 당연하게도 더 많은 요소들을 가지고 있지만, 세 가지가 없을 경우에는 우리가 원하는 바를 이룰 수 없다. Publisher Publisher는 한개 또는 그 이상의 관심을 가지고 있는 대상에게 값들을 방출할 수 있는 타입이다. 연산, 네트워킹 또는 사용자의 이벤트 처리를 포함하여 모든 것이 될 수 있는 Publisher의 내부 논리에 관계 없이 다음 세가지 유형의 이벤트를 보낼 수 있다. Publisher의 제네릭 타입인 Output 타입의 값 성공에 대한 Completion Publisher의 Failure 타입과 동일한 에러를 방출하는 Completion Publi..

IOS/Swift 2023.09.07