본문 바로가기

전체 글

(87)
[Swift] 타입 추론과 타입 어노테이션 안녕하세요 제인입니다! 글을 굉장히 오랜만에 올리게 되었는데,, 그동안 TIL 스터디를 하며 깃헙에 그날 공부한걸 업로드하다보니 티스토리 업로드를 거의 까먹게된... 머 그런 사연이...있지만 사실 핑계고..ㅎ TIL 글을 티스토리에도 옮기면서 이제 다시 꾸준히 업로드를 해보도록 하겠습니다!! 아좌자~ 오늘은 Swift에서 자료를 명시하는 두가지 방법인 타입 추론과 타입 어노테이션을 비교하며 정리해보려고 합니다! Swift에서의 상수, 변수 선언 let : 상수 선언 키워드 var : 변수 선언 키워드 let 상수명: 타입 = 값 var 변수명: 타입 = 값 // 선언 예시 let name: String = "Eunju" var age: Int = 20 위와 같이 let과 var 키워드를 이용해 상수나 ..
[Swift] DI(의존성 주입) in Swift 의존성(Dependency) 객체 지향 프로그래밍에서 의존성(Dependency)은 서로 다른 객체 사이에 의존 관계가 있다는 것을 말합니다. 즉, 의존하는 객체가 수정되면, 다른 객체도 영향을 받는다는 것입니다. 예시로 아래의 코드를 봅시다. struct Coffee { func drink() { print("커피를 마신다") } } struct Programmer { private let coffee = Coffee() func startProgramming() { self.coffee.drink() } } Programmer객체는 Coffee객체를 인스턴스로 사용하고 있으므로, Programmer객체의 startProgramming()이 호출되기 위해서는 Coffee 구조체가 필요합니다. 이 때 P..
[Design Pattern] 구조패턴 - Adapter Pattern 구조 패턴 어댑터 패턴은 디자인패턴 중 구조 패턴에 해당하기 때문에, 구조 패턴이 무엇인지 부터 알아보겠습니다! 구조 패턴은 클래스와 객체가 어떻게 구성되는지와 관련이 있습니다. 구조 패턴은 새로운 기능을 구현하기 위해 인터페이스나 구현으로 처리하기 보다는 객체를 구성하는 방법을 정의합니다. 이렇게 추가된 기능들의 유연성은 런타임에서 구성을 변경할 수 있는 능력에서 비롯되며, 정적 클래스로는 할 수 없는 일입니다. 간단하게 말해서 구조 패턴은 여러개의 독립적인 클래스를 하나처럼 사용할 때 사용하거나 여러 인터페이스를 통합하여 하나의 인터페이스로 만드는 패턴이라고 할 수 있습니다. Adapter Pattern (어댑터 패턴) 어댑터 패턴은 호환되지 않는 인터페이스를 가진 두 개의 객체가 함께 동작할 수 있..
[RxSwift] Observable RxSwift 개념 정리글에서 RxSwift의 정의에 대해 정리해보며, Observable이 반응형(Reactive) 프로그래밍의 가장 큰 핵심이다. 라고 정리했습니다. 그렇다면 이 중요한 개념! Observable이 무엇인지, 어떻게 만드는지, 어떻게 사용하는지에 대해서 좀 더 자세히 알아봅시다! Observable Observable의 개념부터 다시 가져와서 설명해보자면, ReactiveX에서 Observable 객체는 사전적인 의미대로 어떤 '객체'를 관찰할 수 있는 형태로 만드는 것을 말하며, Observable 객체를 생성함으로써 Observer는 관찰을 시작(구독)하게 됩니다. 이 '객체'에 따라 실제 관찰하는 값(== 스트림에 흘려보내는 값) 혹은 관찰의 대상인 사건(== 이벤트)이 결정됩니..
[Architecture] VIPER 패턴 안녕하세요, 제인입니다! 최근 시작한 아키텍처 및 디자인 스터디에서 첫번째로 주제로 다루었던 VIPER 아키텍처 패턴에 대해 정리해보려 합니다. 바로 시작하겠습니다😊 VIPER Pattern이란? View, Interactor, Presenter, Entity, Router의 약자를 따와서 VIPER라는 이름이 명명된 단일책임원칙 기반의 아키텍쳐입니다. 응집도는 높고 결합도는 낮은 형태로, 아무래도 각각의 구분이 많은 만큼 역할 단위의 구분이 명확합니다. (이것이 뭔가 장점이 될 수도 단점이 될 수도 있는 것 같긴합니다..) 이해를 돕기 위해 그림으로 표현해봤는데요, 하나씩 살펴봅시다! View : 어떤 패턴이든 사용하는 View 역할입니다. 주로 UIViewController, UIView들이 이 역할..
[RxSwift] RxSwift와 비동기 프로그래밍 안녕하세요! 제인입니다 :) 요즘 비동기적 처리에 대한 필요성을 느끼고, 아키텍처 공부도 시작하다 보니 자연스럽게 RxSwift에 관심이 생겨 공부를 해보고 있는데요! RxSwift의 기본 개념부터 차근차근 정리해나가려고 합니다! RxSwift란? RxSwift는 Reactive eXtension + Swift의 합성어로 이루어진 용어로, Swift에 ReactiveX를 적용시켜 비동기 프로그래밍을 직관적으로 작성할 수 있도록 도와주는 라이브러리입니다. 그렇다면 ReactiveX란 무엇일까요?🤔 ReactiveX 공식 홈페이지에 따르면 ReactiveX란, An API for asynchronous programming with observable streams '옵저버블 스트림으로 비동기 프로그래밍을 ..
[Architecture] MVC, MVP, MVVM 아키텍처 패턴 안녕하세요😊 오늘은 아키텍처 패턴 몇가지에 대해 정리해볼까 합니다! 아키텍처에 대해 공부해야겠다고 생각한 이유는 MVC 패턴으로 개발하며 VC가 모든 역할을 담당하다보니 점점 무거워지는 것을 느꼈고.. 이러한 MVC 패턴의 단점에 대한 대안으로 MVVM 패턴이 있다는 것을 알게 되었습니다. 그래서 이번 포스팅에서 MVC, MVP, MVVM 아키텍처 패턴에 대해 차이점을 위주로 정리해보려고 합니다! 아키텍처 패턴이란? 먼저, 아키텍처 패턴이란 무엇일까요? 위키피디아에 따르면, 아키텍처 패턴이란, 주어진 상황에서의 소프트웨어 아키텍쳐의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책을 의미한다. 아키텍처 패턴은 소프트웨어 디자인 패턴과 유사하지만 더 큰 범주에 속한다. 간단히 말하면, 아키텍처 패..
[SOPT] 29기 SOPT iOS 파트 YB 지원 및 합격 후기 - (2) SOPT 29기 iOS파트 YB 서류 지원 후기와 꿀팁에 이어 면접 후기와 꿀팁을 써보려고 한다. 나 또한 면접이 정말 긴장되었기 때문에 어떻게 준비해야하지 하며 열심히 후기글을 찾아봤던 기억이 있는데.. 이 글이 서류 합격자분들에게 조금이나마 도움이 되길 바라며 기억을 더듬어서 열심히 적어보도록 하겠다..! 서류 지원 후기는 아래 링크에서 보실 수 있습니다! [SOPT] 29기 SOPT iOS 파트 YB 지원 및 합격 후기 - (1) 29기가 끝난지 한참 지난 지금... (무려 새학기) 이제야 내가 SOPT에 지원해서 어떻게 합격까지 하게 됐는지 그 과정을 적어보려고 한다. 왜냐면 나도 지원과정에서 누군가의 블로그, 후기글을 보 janechoi.tistory.com 면접 준비 과정 29기 YB 면접은 ..