iOS

    swift - 값 타입 vs 참조 타입

    클래스(class)와 구조체(struct)는 흔하게 접할 수 있는 친구들이죠 사용하는 것을 보면 비슷해 보이지만, 분명 차이가 있기 때문에 나눠놨을 것이고,, 또 중요한 부분이니 딱! 잡고 넘어가면 좋을 것 같습니다. (이걸 이제?) 공통점? 실제로 이 둘은 많은 공통점을 가지고 있죠! 정리를 해보면 아래와 같습니다. 프로퍼티(값을 저장)를 정의! 메소드(기능 제공)를 정의! 생성자(initializer)를 정의! 특정 값에 접근할 수 있는 subscript 정의! 프로토콜 사용과 extension 가능! 이 정도가 되겠네요,, 그렇다면 클래스에서만 사용할 수 있는 기능에는 무엇이 있을까요~? 크게 상속, 타입 캐스팅, 소멸자, 그리고 참조 카운트가 있겠네요. 이 중에서도 참조 카운트가 중요하다고 생각합..

    swift - SnapKit & Then

    최근에 스냅킷을 자주 사용하게 되어 정리를 하려고 합니다! GitHub - SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub. github.com podfile에 SnapKit과 Then을 추가하시고 install 해주세요! 스냅킷은 iOS와 OS X에서 오토레이아웃을 쉽게 잡아주는 친구라고 하네요. 직접 사용해 보니까 오토레이아웃을 코드를 사용하여 직관적으로 나타낼 수가 있어서 좋았습니다! Then은 클로저를 사용해서 인스턴스(여기서는 뷰)를 생성할 때 ..

    swift - Coordinator Pattern

    Coordinator? 코디네이터 패턴을 제시한 Soroush Khanlou씨는 코디네이터를 다음과 같이 설명합니다. 하나 이상의 뷰 컨트롤러에게 뷰의 트랜지션을 지시하는 객체다! 약간 말이 어렵지만, 하나 이상의 뷰 컨트롤러의 화면 전환, 계층에 대한 흐름을 제어하는 객체라고 생각하시면 됩니다. 일반적으로 뷰 컨트롤러를 전환한다고 하면 이러한 모습을 가지고 있죠? 뷰 컨트롤러A는 뷰 컨트롤러 B에 대해 알고 있어야 하는 구조입니다! 하지만 Coordinator 패턴에서 뷰 컨트롤러A는 Coordinator 인스턴스만 가지고 있고, 뷰 컨트롤러 B에 대해서는 알 필요가 없습니다! 화면 전환을 하고 싶으면 Coordinator에게 요청을 하는 구조입니다. 어떠한 장점이 있을까? 일반적으로 코드를 작성할 때..

    RxSwift - Driver vs Signal

    오늘은 Driver와 Signal에 대해서 정리를 해보려고 합니다! 종종 보이는 녀석인데 약간 습관처럼(?) 사용은 해도 왜 사용하지?에 대해서는 생각해 본 적이 없더라구요 ㅎㅎ;; Driver RxSwift를 사용해서 테이블뷰 혹은 컬렉션뷰를 만들 때 보통 이렇게 사용을 할 겁니다! asDriver()는 어떤 역할을 하는 메소드일까요? 정의된 메소드를 타고 들어가보면 이런 식으로 구현이 되어 있습니다 아아닛?! asObservable이 보입니다! 그냥 Observable에 asObservable 한 것에 .observe(~)를 한 것이 Driver인 것 같네요 여기서 중요한 것은 저기 보이는 DriverSharingStratergy.scheduler 입니다 잘 모르겠지만 scheduler를 다루나봐요!..

    swift - MVVM 패턴 (feat. MVC)

    iOS 공부를 하면서 MVC나 MVVM 등, 다양한 패턴에 대해서 들어 보셨을 겁니다. 그런데 이런 패턴을 적용하는 이유가 뭐지?? 그냥 돌아가기만 하면 되는 거 아닌가?? 라는 생각을 했었지만... 프로젝트의 크기가 커진다면? → 에러가 난 부분을 찾는 것과 로직 파악이 어렵다 (분명 내가 짠 코드인데...?) 함께 협업하는 상황이라면? → 잇시 이거 누가 짰어! (그 코드를 이해하는 데 어려움이 발생) 문제점은 여러가지가 있겠지만 그 중에서도 위의 문제가 중요하다고 생각합니다. 적절한 비유는 아니지만... 만약 자취를 한다고 생각하면! 혼자 산다! 그러면 뭐 대충(?) 살겠죠. 분명 내가 던져 놓은 물건인데 필요할 때에는 꼭 찾기 어렵고... 하지만 함께 산다! 서로 민폐가 되지 않기 위해서 규칙을 ..

    swift - ReactorKit

    MVVM 패턴은 따로 규격화된 것이 없습니다. 그렇기 때문에 개발자의 개발 스타일에 따라 코드가 달라질 수 있습니다! 협업을 한다면 치명적인 문제가 될 수 있습니다. 코드를 이해하는 데 시간이 걸리고 의도와 다르게 파악할 수도 있기 때문이죠. 하지만 ReactorKit은 형식이 있기 때문에 다른 개발자가 작성한 코드도 쉽게 이해할 수 있습니다!! 그리고 보통 MVVM과 RxSwift를 같이 사용하는 경우가 많은데, 이때 상태 값을 관리하기가 어려워지는 문제가 있습니다. 이런 문제들을 빠샤! 하기 위해 등장한 것이 바로 ReactorKit입니다! 그리고 RxSwift 기반으로 만들어졌기 때문에 RxSwift의 메소드를 사용할 수 있습니다. 흐름은 MVVM과 비슷합니다. 사용자가 어떠한 액션을 보내면 Rea..