Project
-
[iOS-2] Dependency Container로 의존성 관리하기Project/TalkTalk 2025. 3. 31. 23:01
의존성 주입이란?의존성 주입(Dependency Injection)은 한 객체가 다른 객체에 의존할 때, 외부에서 해당 의존성을 제공하는 디자인 패턴이며 다음과 같은 이점을 가질 수 있습니다. 결합도 감소: 객체가 자신의 의존성을 직접 생성하지 않아 결합도가 낮아집니다.테스트 용이성: 실제 구현체 대신 테스트용 모의 객체를 주입할 수 있습니다.유연성: 런타임에 의존성을 변경할 수 있어 유연한 설계가 가능합니다.코드 재사용성: 의존성이 분리되어 컴포넌트의 재사용이 용이해집니다.예를 들어 네트워크 통신이 필요한 뷰모델이 있다고 할 때, 이 뷰모델은 네트워크 작업을 하는 객체를 내부에서 직접 생성하지 않고 뷰모델 객체가 생성되는 시점에 외부에서 주입받습니다. 좀더 자세히 설명해 보면 NetworkServic..
-
[iOS-1] Coordinator 패턴을 사용한 화면 전환 관리Project/TalkTalk 2025. 3. 28. 22:03
Coordinator 패턴이란?Coordinator 패턴은 화면 전환 로직을 ViewController로부터 분리하여 별도의 객체(Coordinator)에게 위임하는 아키텍처 패턴입니다. 이 패턴을 통해 ViewController는 UI 표시와 사용자 입력 처리에만 집중할 수 있고, 복잡한 화면 전환과 앱의 전체 흐름은 Coordinator가 관리하게 됩니다.Coordinator 패턴 구현 Coordinator 프로토콜을 정의하여 각 화면을 관리하는 Coordinator들이 반드시 포함해야할 구현을 강제합니다. /// Coordinator 패턴을 구현하기 위한 기본 프로토콜/// 앱의 화면 흐름을 관리하고 뷰 컨트롤러 간 전환 로직을 캡슐화합니다.protocol Coordinator: AnyObject ..
-
Swift Student Challenge 프로젝트 후기Project/SoundScape 2025. 2. 22. 16:16
공간과 감각 혼자 작업할 때 허전한 기분이 들면 그 순간을 채워줄 BGM을 찾습니다. 유튜브를 살펴보면 다양한 플레이리스트들이 있는데, 특히 "카페에서", "해변에서", "공원에서"처럼 특정 장소를 키워드로 선정된 노래들을 들으면마치 그 장소에 와 있는 듯한 느낌이 들곤 합니다. 눈으로 보는 것이 많은 것들을 확정 짓지만, 느낌은 귀와 더 긴밀하게 연결되어 있는 듯합니다."분위기라는 단어가 주는 미묘한 느낌을 시각적으로 표현하면 어떨까?"라는 생각을 가지고 있었고, Swift Student Challenge에 참가하며 이 아이디어를 앱으로 구현해 보기로 했습니다. Sound + landscape프로젝트 이름은 Sound(소리)와 landscape(풍경)를 결합한 'Soundscape'로, '소리가 그리는..
-
SoundScape 전체 시스템 구조Project/SoundScape 2025. 2. 21. 22:53
전체 시스템 구조 입력 시스템 마이크 입력: 기기의 마이크를 통해 실시간으로 오디오 데이터를 캡처합니다.카메라 입력: ARKit을 통해 기기의 카메라로부터 비디오 프레임과 공간 정보를 캡처합니다.코어 처리 시스템 AudioSystem: 오디오 데이터 처리의 핵심 클래스로, AVAudioEngine을 사용하여 마이크 입력을 캡처하고 Accelerate 프레임워크의 vDSP를 활용해 FFT(고속 푸리에 변환)를 수행합니다. 오디오 신호를 12개의 주파수 대역으로 분석하고 FrequencyData 형태로 출력합니다.ARSystem: ARKit을 사용하여 AR 세션을 관리하고, 카메라의 위치/방향 정보, 감지된 평면, 주변 조명 정보 등을 ARData 형태로 제공합니다.RippleSystem: AudioSyst..