apple 216

[iOS] UICollectionView에 대해서 알아보기 1편

UICollectionView에 대해서 알아보기 1편 이 문서를 작성하는 이유는 개인적으로 TableView보다 CollectionView가 범용성이 더 좋다고 생각하고 있습니다. 테이블 뷰를 컬렉션 뷰로 변환해야할 때 드는 비용을 생각했을 때, 그냥 컬렉션 뷰로 만드는게 더 낫다고 판단했습니다. 그리고 무엇보다도,, 이 문서를 정리하는 가장 큰 이유는 MVVM패턴을 기본으로 개발을 진행했지만, Cell은 늘상 MVC로 작업해 왔습니다.(그 이유는 아마도, Cell에 많은 정보가 담겨본 적이 없었기 때문) ReactorKit을 공부하면서 Cell왜 굳이 Reactor가 필요한가 싶었는데, RxTodo하면서 보니까 필요하더군요! 아무튼 컬렉션뷰를 처음부터 잘 정리해 봅시다!! (목표) - UICollect..

[iOS] present 이후 pushViewController

present 이후 pushViewController 그러니까 내가 하고싶은 말은 modal로 띄워진 창에서 pushViewController가 먹히지 않는 상황에 대한 설명이다. 다른 포스팅은 스토리보드를 이용하고 있었고, 난 코드 기반으로 UI를 구성하기에 이에 대한 포스팅을 남겨두고자 함. 상황) view A, B, C 세가지가 있다고 가정 👉 ViewA viewA는 SceneDelegate에서 기본적으로 UINavigationController를 Embed in하고 있음. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { gua..

[ReactorKit] ReactorKit 공부하기 #2

ReactorKit 공부하기 #2 해당 문서는 ReactorKit 3.2.0을 기준으로 작성.이번에는 테스트코드를 작성해볼 예정  들어가기 전RxTest는 반드시 CocoaPod에서 Tests쪽으로 타겟을 잡아주기!  테스팅ReactorKit의 경우에는 테스트를 위한 함수가 내장되어 있어서, 손쉽게 view와 reacotr 둘 다 테스트 가능. 그렇다면 무엇을 테스트 해야하냐면 총 3가지를 테스트하면 좋음View Action :: 주어진 유저의 상호작용에 따라 적절한 action이 reactor로 보내지는가?State :: 주어진 state에서 view의 변수가 적절하게 set(저장) 되는가?ReactorState :: action에 따라 state가 적절하게 변경되었는가?  리액터킷 테스트코드//// ..

[ReactorKit] ReactorKit 공부하기 #1

ReactorKit 공부하기 #1 해당 포스팅은 ReactorKit 3.2.0을 기준으로 함 오늘은 ReactorKit에 대해서 공부해보려고 함.MVVM을 사용하고 있는데 무신사 등에서 리액터 킷을 사용하고 있대서 학습해보고자 함. 오픈소스 링크 및 설명https://github.com/ReactorKit/ReactorKithttps://www.slideshare.net/devxoul/hello-reactorkit Basic ConceptReactorKit은 반응적이고 단방햑적인 Swift 아키텍처를 위한 프레임워크   ReactorKit은 Flux와 Reactive Programming의 조합user의 Action과 View의 상태는 observable streams을 통해 각각의 레이어에 전달이러한 ..

Swift 디자인패턴 Coodinator Pattern (코디네이터 패턴)

Swift 디자인패턴 Coodinator Pattern (코디네이터 패턴) Coordinator 패턴은 화면 전환 및 네비게이션 로직을 분리하여 ViewController의 역할을 단순화하고, 앱의 화면 흐름을 관리하기 위한 아키텍처 패턴. 히스토리2022-07-07: 디자인 패턴 스터디 정리2024-11-29: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Coordinator Pattern코디네이터 패턴은 일반적으로 아래의 구조로 구성Coordinator는 모든 구체적인 Coordinator들이 반드시 구현해야 하는 메서드와 속성을 정의하는 인터페이스children과 router를 정의하며, 화면 전환 메서드인 present와 dismiss도 정의Concrete Coordinator ..

Swift 디자인패턴 Command Pattern (복합체 패턴)

Swift 디자인패턴 Command Pattern (복합체 패턴) Command 패턴은 행동 패턴 중 하나로, 특정 작업을 수행하기 위한 정보를 명령 객체에 캡슐화하는 방식. 히스토리2022-07-05: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Command PatternCommand Pattern은 일반적으로 3개지 개념으로 구성됨Command: 특정 작업을 수행하는 메서드를 호출하는 객체. 실행할 작업에 대한 정보를 포함Invoker(호출자): Command 객체를 호출하여 작업을 실행하는 역할. Invoker는 명령을 실행하기 위해 Command 객체를 참조Receiver(수신자): 실제 작업을 수행하는 객체. 명령 객체는 Receiv..

Swift 디자인패턴 Chain-of-Responsibility Pattern (책임 연쇄 패턴)

Swift 디자인패턴 Chain-of-Responsibility Pattern (책임 연쇄 패턴) Chain of Responsibility 패턴은 요청을 처리할 수 있는 여러 객체를 연결하여, 요청이 처리될 수 있는 객체를 찾는 행동 패턴.요청을 보낸 객체와 요청을 처리하는 객체를 분리하여, 요청을 처리할 수 있는 객체가 여러 개일 때 유용 히스토리2022-07-05: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 스스로 만든 예제로 변경   Chain-of-Responsibility PatternChain-of-Responsibility Pattern은 일반적으로 3개지 개념으로 구성됨Handler Protocol: 요청을 처리할 수 있는 인터페이스Concrete Handler: ..

[XCTest] XCTest에 대해서 알아보기 1편

XCTest에 대해서 알아보기 1편  XCTest를 공식문서를 통해 정리Nimble Quick 등도 다시볼겸 정리해보자.사이드 프로젝트에서 테스트코드 작성하면서 점차 더 다양한 테스트를 시도하고 있는데, 정리가 한번 필요할 것 같았음 유닛테스트는 여러 형태로 자주 사용하고 있고,UI테스트는 아직까지 다채롭게 사용하지는 못하는 것 같은데, 자동 완성 기능이 꽤나 쏠쏠해서 특정 플로우에 QA용으로 빠르게 작성해서 테스트 용으로 사용 중임. 퍼포먼스 테스트는 해본 적은 없지만 인스트루먼트 보면서 그냥 거기서 hang걸리거나 부족한 부분 없는지 체크중인데, 성능 최적화 부분에 대해서 컴파일러 최적화 등에 의존하지 않고, 직접 사용하고자 할 경우 특정 핫스팟을 발견해서 작성이 필요하다고는 알고 있음.  ✅ 공식문..

Swift 디자인패턴 Composite Pattern (복합체 패턴)

Swift 디자인패턴 Composite Pattern (복합체 패턴) Composite Pattern은 객체들을 트리 구조로 그룹화하여 하나의 객체처럼 조작할 수 있게 함. 구조 패턴으로. 객체들을 트리 구조로 그룹화하여 하나의 객체처럼 조작할 수 있게 함. 히스토리2022-06-15: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Composite PatternComposite Pattern은 일반적으로 3개지 개념으로 구성됨Component: 공통 인터페이스를 정의Leaf: 구현된 객체를 나타내며, 더 이상 자식 객체를 가지지 않음Composite: 자식 객체를 포함할 수 있는 객체로, 자식 객체를 추가하거나 제거할 수 있는 메서드를 제공복합..