전체 글

iOS 개발

[iOS 개발] NotificationCenter란?

NotificationCenter란? NotificationCenter에 어떤 이벤트가 발생했을 때 어떤 일이 처리될 지를 정의, 등록, 관리하는 것 NotificationCenter를 사용하면, 싱글톤과 비슷하게 클래스마다 데이터를 주고받기가 편해진다. 대신 NotificationCenter를 사용하는 모든 클래스에 NotificationCenter에 대한 의존성이 생긴다는 단점이 존재. 하나의 VC가 아닌 여러 개의 VC를 통제하기에 좋은 방법이다. 1:1 보다는 1:N에 사용하려고 주로 사용하는 것이 NotificationCenter인듯. Nofication은 유저에게 무언가 알려주는 역할이 아닌, 애플리케이션 내에서 정보를 전하기 위해 "알림을 방송한다"는 역할을 가지고 있다. 하지만 이 알림 즉..

아직정리안한것들모음집

[Coordinator] 내용 정리 2

코디네이터를 책임과 역할에 따라 분리하기 위 구조와 같이 Buy Coordinator를 만들어 Buy 용도에 맞는 화면들을 전환할 수 있다. 이렇게 용도별로 코디네이터를 분리하면 메인 코디네이터의 역할 부담이 줄어들고, 화면 전환 로직을 찾을 때 좀 더 빠르게 찾을 수 있지 않을까라는 장점이 있을 것 같다(주관적인 생각) Parent Coordinator와 Child Coordinator 이해하기 만약 여러 개의 코디네이터를 사용할 경우 다음과 같은 구조가 완성될 것이다. 이때 상위에 있는 parent coodinator와 하위에 있는 child coordinator의 관계를 맺어줘야 한다. 1단계: 이전에 우리는 Parent coodinator에 해당되는 MainCoordinator를 만들었었다. 이제..

아직정리안한것들모음집

[Coordinator] 내용 정리 1

(해당 글은 https://lena-chamna.netlify.app/post/ios_design_pattern_coordinator_basic/ 를 참고해 작성한 글입니다.) Coordinator란? 코디네이터는 하나 이상의 뷰 컨트롤러에게 지시를 내리는 객체이다. 여기서 말하는 지시는 화면 전환에 대한 지시를 의미한다. 코디네이터 패턴에서는 현재 ViewController에서 그 다음 ViewController로 이동할 때 직접 push나 present등의 화면 전환을 하지 않는다. 그 대신 모든 화면 네비게이션을 코디네이터가 관리한다. 즉, ViewController에서 Navigation의 책임을 다른 클래스로 분리한다. 따라서 ViewController들 간에 의존성이 낮아지게 된다. Coord..

Swift

[Swift] Swift Thread - GCD

GCD 관련 정리 잘한곳: https://sujinnaljin.medium.com/ios-%EC%B0%A8%EA%B7%BC%EC%B0%A8%EA%B7%BC-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-gcd-grand-dispatch-queue-1-397db16d0305 GCD란? Grand Central Dispatch의 줄임말이다. Swift에서 스레드 관련 작업은 Grand Central Dispatch API를 통해 처리한다. GCD는 클로저 블록 안에 있는 특정 작업을 큐에 올리고, 해당 큐를 특정 스레드에 실행하는 방식이다. 멀티 코어와 멀티 프로세싱 환경에서 스레드 프로그래밍을 효율적으로 할 수 있도록 애플이 개발한 기술로써 적절하게 사용해 Thread-safe하게 구현..

Clean Architecture

[Clean Architecture] 만들면서 배우는 클린 아키텍처 9장

9장. 애플리케이션 조립하기 의존성 주입 이용하기 앞에서 유스케이스, 웹 어뎁터, 영속성 어뎁터를 구현했으니, 이제 이것들을 동작하는 애플리케이션으로 조립할 차례 3장에서 이야기했듯이 애플리케이션이 시작될 때 클래스를 인스턴스화하고 묶기 위해서 의존성 주입 메커니즘을 이용 왜 조립까지 신경 써야 할까? 왜 유스케이스와 어탭터를 그냥 필요할 때 인스턴스화하면 안 되는 걸까? 코드 의존성이 올바른 방향을 가리키게 하기 위해서입니다(안쪽으로 향하도록) 만약 유스케이스가 영속성 어탭터를 호출해야 하고, 스스로 인스턴스화한다면 의존성의 방향이 잘못된것이다. 해당 이유가 바로 아웃고잉 포트 인터페이스를 구현한 이유입니다. 유스케이스는 인터페이스만 알아야 하고, 런타임에 이 인터페이스의 구현을 제공받아야 한다. 이러..

iOS 개발/Combine

[Combine] combine 정리2 (sink, handleEvents, receive)

sink handleEvents(receiveOutput: ) receive(on: ), subscribe(on: ) 1. sink 애플 개발자 문서를 보면 sink 란 클로저 기반의 동작이 있는 subscriber를 절대 실패하지 않게 하는 publisher와 연결하는 것 그렇기 때문에 에러 타입은 Never 일때만 가능(그래서 회사 subject 에러 타입이 죄다 Never인 것) func sink(receiveValue: @escaping ((Self.Output) -> Void)) -> AnyCancellable Return Value 수신 된 값의 할당을 종료할 때 사용하는 Cancellable 인스턴스를 리턴한다. 결과를 할당해제 한다면 sumbscription stream을 해제하게 된다. ..

회고

모듈화 세미나 질문 정리

1. Dynamic Framework와 Static Framework의 차이 두 개의 차이는 "컴파일된 코드를 참조하는 방식"에 있습니다. Dynamic framework는 라이브러리에 대한 참조만 포함하고, Static Framework는 라이브러리 코드가 모두 포함되어 있습니다. Dynamic Framework 장점: Framework 내에 이미지나 뷰같은 리소스 파일 혹은 Bundle을 Embeded 할 수 있음 링크를 참조하기에 Static Framework에 비해 메모리가 자유로움. 빌드 속도가 단축 단점: 디버그시 필요한 dSYM 파일을 프레임워크 개발자가 제공해야함 Static Framework에 비해 런타임상 속도가 느림 Static Framework 장점: 앱 실행파일에 직접 링크되어 있..

bamtorii
bamtori