본문 바로가기

분류 전체보기112

Publisher 깊게 보기 Publisher의 종류 한눈에 보기Combine에서 쓰는 Publisher는 크게 세 부류로 나뉨.분류 예시 특징기본 제공 PublisherJust, Empty, Fail, Future, Deferred한 번 정의되면 값이 정해져 있음외부 이벤트 PublisherURLSession.dataTaskPublisher, NotificationCenter.Publisher, Timer.publish시스템 이벤트에서 값이 흘러나옴수동 발행 PublisherPassthroughSubject, CurrentValueSubject, @Published코드에서 send()로 값을 직접 주입Apple이 기본 제공하는 Publisher들Just — 값 하나 내보내고 끝let publisher = Just("Hello")/.. 2026. 5. 13.
Combine이란? — 핵심 개념 3가지 세 개의 역할만 기억하면 됨.Combine의 모든 구조는 세 가지 역할로 설명됨.Publisher — 데이터를 내보내는 쪽Subscriber — 데이터를 받는 쪽Operator — 중간에서 데이터를 변환하거나 필터링하는 쪽아무리 복잡한 Combine 코드도 결국 "누가 데이터를 만들고, 누가 중간에서 가공하고, 누가 최종적으로 받는가"로 분해됨.Publisher — "나 값 줄게"Publisher는 시간이 지남에 따라 값을 내보내는 프로토콜. 네트워크 응답이 될 수도 있고, 텍스트필드의 입력값이 될 수도 있고, 타이머의 틱이 될 수도 있음.Publisher가 내보낼 수 있는 건 두 가지뿐임.값(Output) — 0개 이상완료(Completion) — 정상 종료 또는 에러. 한 번 발생하면 더 이상 값을 .. 2026. 4. 8.
왜 Combine인가? Combine의 필요성에 대해 기록합니다. Combine이란?네트워크 요청, 사용자 입력 등 언제 올지 모르는 데이터(비동기로 발생하는 이벤트)를 다루기 위한 비동기 처리가 필요함.Combine은 이 처리를 해결하기 위해 만든 프레임워크→ 여러 비동기 패턴들을 하나의 일관된 파이프라인으로 통합하는 프레임워크기존 방식의 한계Combine 이전에는 여러가지 방식들(Completion Handler, Delegate, Notification Center, KVO 등)을 사용하여 처리했었음.각각의 패턴에 장점이 있지만, 한 곳에 모이면 코드의 흐름을 따라가기가 어려워짐.어떤 이벤트가 어디서 시작되어 어디로 흘러가는지, 에러는 어느 시점에서 처리되는지 이 모든걸 머릿속에서 추적해야 함.콜백 중첩 문제흔한 예를 들.. 2026. 3. 25.
[iOS] Diffable DataSource Diffable DataSource 관련 내용을 기록합니다. 기존 DataSource 이슈*** Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘Invalid update: invalid number of sections. The number of sections contained in the collection view after the update (10) must be equal to the number of sections contained in the collection view before the update (10), plus or minus the number of sections i.. 2024. 6. 14.
[Swift] 알고리즘에 필요한 Tip 정리 스위프트 알고리즘을 시작하면서 필요한 내용을 정리한 것을 올립니다! 시간 날 때마다 계속 추가할 예정..! 기본 입력 받기 (input의 타입은 String)var input = readLine()! Int형 한 개의 숫자 입력 받기var num = Int(readLine()!)! "1 2 3 4 5"와 같은 공백 있는 숫자 입력 받기// split - ReturnType: [SubString]var nums = readLine()!.split(separator: " ").map {Int($0)!}// components - ReturnType: [String]var nums = readLine()!.components(separatedBy: " "). map {Int($0)!} "12345"와 같은 공.. 2024. 5. 21.
[iOS] 타사 SDK 요구 사항 변경 예정 Upcoming third-party SDK requirements24년 5월 1일부터 앱스토어 커넥트에 제출되는 앱은 privacy manifest 가 제공되지 않으면 리젝됨.타사 SDK는 개발자나 사용자도 모르게 개인정보 보안을 취약하게 만들 수 있음.<p data-ke-size="size.. 2024. 3. 22.
[Design Patterns] Clean Architecture 클린 아키텍처에 관한 내용을 기록합니다. 클린 아키텍처 로버트 C. 마틴(Uncle Bob)에 의해 처음 제안한 아키텍처 대부분의 아키텍처는 공통적인 목표가 있는데, 계층을 분리하여 관심사를 분리하는 것임. 각 아키텍처에는 최소 하나의 business rule을 위한 계층과 인터페이스를 위한 계층이 있음. business rule: 비즈니스 요구 사항을 반영하여 데이터를 처리하는 것을 말함. 각 아키텍처는 아래와 같은 특징들이 있음. Independent of Frameworks: 아키텍처는 스포트웨어 라이브러리의 존재에 의존하지 않음. Testable: 비즈니스 로직은 UI 및 DB, 웹 서버 또는 기타 외부 요소 없이 테스트할 수 있음. Independent of UI: UI는 시스템을 변경하지 않고.. 2024. 3. 12.
[iOS] Developer Mode 개발자 모드에 관해 기록합니다. 개발자 모드란? iOS 16과 watchOS 9에서 부터 사용할 수 있음. Default로 꺼져있으며, 개인정보 보호 및 보안 → 개발자 모드에서 켤 수 있음. 리부트와 시스템 업데이트를 해도 유지됨. 디벨로퍼 모드 설정을 자동화할 수 있는 툴이 있음. 개발자 모드가 왜 필요하지? 개발자가 아닌 대다수의 사용자에 대한 보안을 더욱 향상시킴. targeted attacks으로 부터 개발자 기능이 남용되고 있음. 대부분의 사용자는 개발자 기능이 디폴트로 필요하지 않음. 개발자 모드와 배포 대부분의 흔한 배포와 테스팅 흐름은 개발자 모드를 필요로 하지 않음. TestFlight Enterprise (In-House) distribution App Store 개발자 모드는 오직 .. 2024. 3. 12.
[RxSwift] Deferred deferred 구독자가 구독하기 전까지 옵저버블을 생성을 지연시켜, 구독 시점에 각 구독자 별로 새로운 옵저버블을 생성 구독 시점에 항상 Observable 을 생성하므로 최신 데이터를 제공하는 데 사용될 수 있음. (네트워크 요청 등) 구현부 public static func deferred(_ observableFactory: @escaping () throws -> Observable) -> Observable { Deferred(observableFactory: observableFactory) } 예시 코드 func createObservable() -> Observable { return Observable.just(Date().timeIntervalSince1970) } Observable.. 2024. 3. 11.
[RxSwift] Relay Relay Subject Wrapping 하여 기능 확장 Subject 와 유사하지만 Next 이벤트만 발생하며, Completed 와 Error 이벤트는 발생하지 않음.→ 스트림이 계속 유지되어 UI Event 와 바인딩하여 사용하기 적합 Dispose() 호출되어야 메모리 해제 RxCocoa 임포트 필수 .accept 로 데이터 방출 PublishRelay 또는 BehaviorRelay 는 기존 PublishSubject 와 BehaviorSubject 를 Wrapping 한 것으로 기존 개념은 Publish 와 Relay 차이 말고는 같은 방식 Subject 대신 Relay 를 사용하는 이유 Subject 는 메모리 관리가 명확하지 않아 메모리 누수가 발생할 가능성이 있지만 Relay 는 Dispo.. 2024. 3. 11.