Publish, Behavior, Replay를 면접 질문으로 받았었는데,,.. 어버버 했던 기억이 트라우마가 되어 개념을 공부하고 직접 구현해보았습니다. 1. Publish 구독 이전의 이벤트는 모두 무시되며 구독 이후 이벤트만 발행한다. 2. Behavior 구독 시 구독 이전 가장 최근에 이벤트를 발행한다. 만약 구독 이전에 이벤트가 없었다면, 생성 시 받았던 초기값을 발행한다. 3. Replay 생성 시 BufferSize를 입력받고 구독 이전, BufferSize만큼의 이벤트를 받아둔 후 구독 시 해당 이벤트들을 발행한다. https://gist.github.com/rising-jun/0addc43aa0d402c587a13c91b714365a 공부하면서 느끼지만 ReactiveX에서 만들어준 구..
Moya를 사용하였습니다. 이유는 URLProtocol을 사용하지 않고 응답으로 Mock데이터를 받고 싶었습니다. 목적에 맞게 SampleData를 사용하여 MockData를 응답으로 받는 serviceStub를 구현하여 테스트하였습니다. 또 하나의 장점은 BaseAPI를 제공하였기에, URLRequest를 매우 편한 방법으로 사용하고, 재활용할 수 있었습니다. 얼마전 Alamofire내부 코드를 읽어보았습니다. - 올해 초 부트캠프를 하며 다른 조원의 PR을 보고 의구심을 갖게 되었습니다. '가장 네트워크쪽에 있을 Alamofire를 요청하는 부분이 View를 바로 설정할 수 있도록 응답이 main에서 실행된다..? 그럴리가 없는데..' 분명 이유가 있을것이다!! 내부의 코드를 읽고 주석을 읽어보니 경..
Alamofire는 URLSession 기반의 네트워크 통신 라이브러리입니다. Alamofire를 사용하는 이유는 코드의 가독성과 사용성입니다. URLSession 기반 라이브러리 답게, request뿐 아니라 download, upload 등의 기능을 모두 사용할 수 있습니다. 일단.. 네트워크통신을 해보겠습니다..!! 간단히 이미지만 가져오는 로직을 구현하려 하는데.. 엥? url하나만 넣었는데 알겠다고.. 잘 가져오는데 문제는! 네트워크작업인데 메인 쓰레드에서 하고 있다는 것..? 왜지... URLSession에서는 자동으로 백그라운드 쓰레드가 실행하도록 하는데.. Alamofire코드를 살펴보겠습니다~ 1. AF ? 먼저 사용하는 방식에서도 알 수 있듯 AF는 싱글톤입니다. Public let A..
- Test를 하는 이유 ( 해야하는 이유 ) 1. 안전해진다. "제품이든 앱이든 테스트를 거치는 이유는 제품의 안정성을 높이기 위해서" == "앱의 완성도를 높이기 위해서" 라 생각합니다. 2. 믿을 수 있기 위해. 단위테스트는 가장 작은 단위들부터 테스트를 하고, 범위를 점점 넓혀 이전에 테스트한 객체를 활용하여 상위객체를 테스트하는 방식을 반복합니다. 그러다 보면 객체 재활용시에도, "이 기능은 믿을 수 있는 기능이야!" 라는 확신이 생기게 되고, 오류가 발생하더라도 "이 행동들의 케이스에서는 오류가 나지 않았어"라는 확신을 갖을 수 있습니다. 해당글을 생각날 때 마다 읽으며 테스트 개념을 익히는 중입니다. ( 돌아서면 까먹어요 ㅜㅜ ) https://ssowonny.medium.com/%EC%84..
값? 참조? 이 두 단어가 무엇인지 이해하고 나면 거의 다 이해한거라 봐도 무방하다 생각합니다. 값타입은 struct, 참조타입은 class입니다. - struct 컴파일타임에 실행 값타입 = Stack영역에 저장됩니다. 그렇기에 Heap영역에 저장되는 참조타입보다 속도가 빠릅니다. 하지만 struct의 변수가 바뀌는 경우 Mutating되기에 메모리에 다시 할당됩니다. struct는 변치 않는 고유값을 갖는 경우, 즉 struct내부의 변수가 바뀌지 않는 경우 사용하기 좋다 생각합니다. - class 런타임에 실행 참조타입 = Stack영역에 Heap영역 주소를 저장합니다. ARC가 메모리를 관리해줍니다. 상속이 가능하며 deinit을 사용하여 인스턴스 메모리를 해제할 수 있습니다. struct보다 속..
지극히 저의 주관적인 생각입니다. MVVM의 장점 : Testable하다. -> ViewModel이 View와 독립적이다! MVVM View에서의 Action을 ViewModel로 전달합니다. 이후 ViewModel은 해당 로직에 맞는 작업을 다른 Model에게 요청하고, 이의 응답을 ViewModel State에 업데이트합니다. View는 ViewModel State를 구독하여 State의 변화가 있을 때 View를 업데이트합니다. 오늘도 +, - 버튼을 넣어보겠습니다. :) 저번 MVC글에서는 오토레이아웃을 적용했는데.. SnapKit없이 쓰기에 정말 간단한 예제임에도 layout관련 코드가 너무 늘어다더라구요.. 그래서 이번엔 스토리보드를 사용하였습니다. - View ( ViewController ..
MVC의 구현방법부터 테스트코드까지 다뤄보겠습니다. https://eastbyeden.tistory.com/8 [Swift][MVC] MVC는 무엇일까? MVC패턴은 ios개발에 사용되는 아키텍쳐(MVC, MVP, MVC-N, MVVM, VIPER) 중 하나입니다. 먼저 아키텍쳐의 사용이유는 - 개체들의 책임을 균형있게 분리하기 위해 (Solid의 Single Responsibility Principle - 단일.. eastbyeden.tistory.com 이전의 MVC소개글 입니다. MVC보다 MVVM을 채택하는 이유는 무엇일까요? 라고 하면 당장 떠오르는 이유는 2가지입니다. 1. Testable하지 않다. 2. Massive ViewController. Testable하지 않은 이유. -> MVVM..
이전부터 공부하던 Dependency에 대해 공부하다 보니, 같은 코드를 여러 프로젝트에서 적용하게 되었고 "아예 cocoapods를 만들어볼까?"는 생각으로 만들게 되었습니다. 1. 의존성 주입 방식. 2. EbonyDependencyKit 사용방법. 링크 : https://github.com/rising-jun/EbonyDependencyKit GitHub - rising-jun/EbonyDependencyKit Contribute to rising-jun/EbonyDependencyKit development by creating an account on GitHub. github.com 1. 의존성을 주입 라이브러리는 크게 Pure와 Swinject가 있습니다. Pure는 AppDelegate에서..
개인적으로 생각하는 Moya를 다룬 포스트입니다. Moya가 등장한 계기는 Alamofire와 URLSession에 있습니다. URLSession의 코드를 더 가독성 좋게 작성하기 위해 나온 라이브러리가 Alamofire입니다. 하지만 Alamofire도 테스트 코드를 작성하기 위해서는 URLProtocol을 사용해야 했습니다. 그렇기에 이를 테스트하기 좋게 하기 위해 Alamofire를 한번 더 추상화한 라이브러리가 Moya입니다. 이러한 내용들로 보아 Moya는 URLSession보다 코드 가독성이 좋고, URLProtocol보다 테스트하기 편하다는 장점이 있다 생각합니다. Github에서 token을 가져오는 API 사용 로직을 구현해보겠습니다. 사용법 import Moya enum GithubAP..
2021년 취업준비를 하며 보았던 iOS개발자 채용 공고들 중 RxSwift, MVVM, MVC만큼이나 많이 볼 수 있었던 단어가 있었습니다. "HIG" = Human Interface Guide https://developer.apple.com/design/human-interface-guidelines/ Human Interface Guidelines - Design - Apple Developer Human Interface Guidelines Get in-depth information and UI resources for designing great apps that integrate seamlessly with Apple platforms. developer.apple.com HIG를 알아야 ..