swift 182

[HLS] Adding alternate media to a playlist

Adding alternate media to a playlisthttps://developer.apple.com/documentation/http-live-streaming/adding-alternate-media-to-a-playlist기본 프레젠테이션에 대체가능한 플레이리스트를 지정.목차Adding alternate media to a playlistIncorporating Ads into a PlaylistVideo on Demand playlist constructionEvent playlist constructionLive Playlist (sliding window) constructionHTTP Live Streaming OverviewCreating a Multivariant Playli..

apple/HLS 2024.12.03

iOS VIPER 아키텍처 정리

iOS VIPER 아키텍처 정리 VIPER Architecture는 Jeff Gilbert와 Conrad Stoll이 클린 아키텍처를 iOS 앱 개발에 특별하게 적용하기 위해서 개발하고 대중화해당 포스팅에서는 Protocol 기반으로 작성 - 개인적으로는 enum으로 이벤트 전달하는게 익숙한데, 프로토콜 기반도 연습하고자 함. 예제 파일VIRER란?ViewViewController로 xib/storyboardInteractor:데이터, 네트워킹 및 비즈니스 로직을 담당.PresenterView와 Interactor 사이에 데이터를 전달하고, 사용자 이벤트를 처리하여 라우터를 호출.VIPER의 다른 모든 객체들과 통신하는 유일한 객체Entity데이터 객체이며 데이터 접근은 Interactor에서 가능VI..

iOS 빌드 메시지 분석해서 빌드 시간 개선하기

iOS 빌드 메시지 분석해서 빌드 시간 개선하기 프로젝트 빌드 메시지를 분석해서 빌드 시간 개선해보고자 함. 예제 파일목차빌드 메시지 확인하는 방법프로젝트 구조 및 Home Package 확인하기1차 문제 분석 및 개선 방향성 잡기Player Package 확인하기Player Package 개선하기1차 개선 결과2차 문제 분석 및 개선 방향성 잡기문제 코드 영역 확인하기HomeDetail을 HomeDetailInterface 모듈로 분리하기개선한 Home Package2차 개선 결과실행 가능한 앱(데모 앱) 구성하기실행 가능한 앱(데모 앱) 빌드 결과결과 한눈에 확인하기1차 개선2차 개선앱 빌드 빌드 메시지 확인하는 방법좌측 인스펙터에 빨간색 이미지 영역 클릭 빌드 이미지를 보면 순차대로 어떤 것들이 ..

언어의 기본 자료형 Dummy를 활용해 더 명확한 테스트 작성하기

언어의 기본 자료형 Dummy를 활용해 더 명확한 테스트 작성하기 테스트 코드를 작성하면서 언어에서 제공하는 기본 값을 그대로 사용하는 경우해당 값이 테스트에 영향을 주는 값인지혹은 단순히 기본값인지 다른 개발자가 판단하기 어려운 경우가 많음.이는 결국 가독성과 유지보수에 문제를 일으킬 수도 있음. 목차Swift의 기본 자료형을 Dummy 대신 사용한 테스트 코드를 마주한 경우Model 과 ViewModel의 구현체 확인테스트 코드에 Dummy 값을 명시적으로 사용한 경우 Swift의 기본 자료형을 Dummy 대신 사용한 테스트 코드를 마주한 경우아래처럼 테스트코드가 작성되어 있다면, 테스트가 올바르게 작성되었다고 생각하기보다 코드를 볼수록 많는 의문점들이 생겨남많은 의문점들은 테스트 본질이 아닌 부..

iOS Combine을 활용해 로그인 상태 관리 기능 구현

iOS Combine을 활용해 로그인 상태 관리 기능 구현 멀티캐스트 딜리게이트 패턴을 활용해 구현했던 코드를 개선하고자 함.멀티캐스트 딜리게이트 패턴 활용한 로그인 상태 관리 구현 : https://rldd.tistory.com/706Combine을 활용해 로그인 상태 관리 기능 구현 : https://rldd.tistory.com/707  목차아이디어데모 샘플 구현 코드Combine 기반 기능 모듈 구현로그인 기능 구현체사용 예제구현 후 분석아이디어이전에 키보드 상태를 감지하기 위해서 Combine을 활용한 적이 있었는데, 이번에도 해당 형태로 구현하면 별도의 주입 없이 더 간편하게 사용할 수 있다고 생각  데모 샘플 구현 코드 (Combine 기반 기능 모듈 구현)멀티캐스트 딜리게이트 패턴을 Com..

오브젝트: 코드로 이해하는 객체지향 설계 11장을 읽으며

오브젝트: 코드로 이해하는 객체지향 설계 11장을 읽으며 느낀점프로그래밍 언어의 발전과 구조에 대한 이론에 점점 더 흥미가 생기는 것 같음. 언어마다 다중 상속을 지원하지 않거나 mixin을 제공하는 방식을 보며 각 언어가 선택한 설계 철학과 구조의 차이를 이해하는 데 많은 인사이트를 얻음. 이러한 차이점은 단순히 문법적 요소에 국한되지 않고, 언어가 지향하는 객체지향의 특성과 설계 원칙에 깊이 뿌리를 두고 있다는 점이 체계적으로 언어를 잘 만든 것 같음. 합성과 유연한 설계상속이 부모 클래스를 자식 클래스를 연결해서 부모 클래스의 코드를 재사용하는 데 비해 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용상속에서 부모와 자식 클래스 간의 관계는 컴파일 타임에 해결..

[Swift] Timer + RunLoop, backgroundQueue (swift-corelibs-foundation)

[Swift] Timer + RunLoop, backgroundQueue (swift-corelibs-foundation) 서비스 및 기능에 따라서 RunLoop.main에서 돌아가게 하면 안되는 케이스도 존재. 잘못 설계할 경우 Timer기반으로 동작하는 로그나 기능 등 예상치 못한 결과를 낼 수 있음. RunLoop.main에서 타이머가 아예 방출되지 않거나 RunLoop.main이 아닌 다른스레드에서 돌려야 하는 경우에 대하서 자세히 알아볼 예정 위 케이스들을 내부 구현 코드를 통해 근거 있게 정리해보고자 함. 글의순서 타이머 알아보기 swift-corelibs-foundation내에 Timer 구현 알아보기 Timer 선언부 Timer scheduledTimer 함수 RunLoop 간단히 알아보..

iOS CoreData Relationships

iOS CoreData Relationships iOS CoreData의 Relationship을 공부해보자.연관 포스팅[iOS CoreData 간단한 CRUD](https://rldd.tistory.com/587)[iOS SwiftData in UIKit](https://rldd.tistory.com/588)[iOS CoreData 이론](https://rldd.tistory.com/586)[iOS CoreData Relationships](https://rldd.tistory.com/661) 히스토리2024.10.13CoreData Relationship 정리2024.12.21CoreData Relationship 패키지 모듈화 정리샘플 코드에서 Commnutity Package 참고히스토리샘플코드목..

[Swift] NSCache (swift-corelibs-foundation)

[Swift] NSCache (swift-corelibs-foundation) NSCache 문서를 읽어보다가 `eviction`이란 단어를 보게 되었는데, 대학 수업을 원서로 배울때, `eviction`과 `expiration`에 대해서 깊게 탐구했던 생각이 났음.애플에서 최근에 Foundation 부분을 오픈소스로 공개했는데, NSCache와 관련해서 구현된 코드를 직접 확인하면서 제대로 이해해보고자 함. 글의 순서NSCache OverviewiOS에서 Cache 종류왜 메모리 캐시가 디스크 캐시보다 빠를까?캐시와 관련한 몇가지 정책 및 알고리즘Foundation에서 구현되어 있는 NSCache에 대해서 코드로 알아보기NSCache 선언부NSCache InsertNSCache removeNSCache..

모듈화 리팩토링 과정에서 고민했던 것들

모듈화 리팩토링 과정에서 고민했던 것들 Tuist 3.x 버전으로 사용한게 마지막이라 4.x 버전으로 학습하고 변경해보고자 함.하나의 설계 방법보단 여러가지 설계들을 보면서 느끼고 경험하는 것이 중요하다고 해서 기존 쓰던 방식을 완전히 배제하고 다른 사람들이 사용하는 방식을 따라하는 수준 + 내 스타일 적용 요정도로 해보고자 함. 글의 순서프로젝트 모듈화 구조 스크린샷리팩토링 시작 전 생각 정리NetwrokSDK 모듈에 대해서feature에서 ui를 분리한 이유화면전환 어떻게 할 것인지이미 구현된 UI가 필요한 경우는 어떻게 할 것인가?관리하는데 드는 비용에 대한 고민마무리 소감 프로젝트 모듈화 구조 스크린샷  리팩토링 시작 전 생각 정리깃헙에 레포 돌아다니면서 다른 사람들이 사용하는 Tuist 참고하..