콩벌레 개발자의 개발 공부 노트
close
프로필 배경
프로필 로고

콩벌레 개발자의 개발 공부 노트

    • 분류 전체보기 (236)
      • 일상 (6)
        • 일상 이야기 (3)
      • Web (17)
        • Spring Boot (6)
        • CSS (3)
        • HTML (2)
        • JSP (0)
      • R (4)
      • Algorithm (88)
        • 백준 (67)
        • 프로그래머스 (19)
      • ICT COG Academy (8)
        • AI 기본 (8)
      • 계산이론 (6)
      • 데이터 베이스 (1)
      • IOT 네트워크 (1)
      • iOS (66)
        • RxSwift (2)
        • swift (16)
        • 앱 개발 (33)
        • 보안 (1)
        • UIKit (10)
        • SwiftUI (3)
      • 클린 아키텍처 (7)
      • 클린 코드 (3)
      • 컴퓨터 구조 (14)
      • 네트워크 (10)
      • 운영체제 (2)
      • KMP CMP (1)
  • mode_edit_outline글작성
  • settings환경설정
  • 홈
  • 태그
  • 방명록

Swift MVI 패턴에서 State 변경 검증 테스트하기

MVI패턴을 이용하여 프로젝트를 진행하면서, 기존 MVVM-In/Out 패턴에서 사용하던 ViewModel 테스트 코드 작성 방식으로는 상태값을 검증하지 못하는 이슈가 발생했다. 기존 MVVM 패턴은 input과 그 input에 대한 상태값의 변경인 output을 받아 화면을 갱신하는 구조여서 output에 대한 검증만 하면 되었지만, MVI 패턴은 State를 UI가 의존하는 구조로 intent에 따라 State의 값이 변경되는 구조로, State가 어느 시점에 변경이 되고 종료되는지를 외부에서 알 수가 없다. 예를 하나 들어보자면 다음과 같이 ViewModel을 정의했다고 가정한다.struct ImageFeedState { var images: [IFImage] = [] var isLoad..

  • format_list_bulleted iOS/swift
  • · 2026. 5. 31.
  • textsms

AVPlayer로 m3u8 재생이 안 될 때 — HEVC 코덱 호환성 문제

내가 담당하고 있는 앱(차량 블랙박스 앱)의 기능 중 라이브 스트리밍 기능이 있는데, 기존에는 AVPlayer를 이용하여 영상을 재생하고 있었다. 그런데 새로운 블랙박스 연동 작업을 하던 중 스트리밍이 재생되지 않았다(까만 화면만 나옴). 분명 재생 관련 코드는 건드리지 않았는데도 말이다. 처음에는 내 작업으로 인한 사이드 이펙트라고 생각해 관련 코드를 확인해 봤지만, 변경된 부분은 없었다. 그래서 기존에 지원되던 단말로 스트리밍을 시도해 보니 정상적으로 재생되는 것을 확인했다. 또한 AVPlayer에서 AVPlayerItem의 프로퍼티들(status, error 등)을 KVO로 디버깅해 봤으나, 별다른 로그도 출력되지 않았다. 그래서 선임 개발자께 해당 이슈를 정리해서 문의했고, 이전 블랙박스와 신규 ..

  • format_list_bulleted iOS/앱 개발
  • · 2026. 5. 3.
  • textsms
iOS) PermissionKit + Declared Age Range을 이용한 미성년자 부모동의 기능 구현 + 테스트

iOS) PermissionKit + Declared Age Range을 이용한 미성년자 부모동의 기능 구현 + 테스트

요즘 미국에서 미성년자 sns 규제가 본격화 되면서 구글과 apple에서도 관련 api를 발표했고, 26년 1월 1일부터 시행되는 SB2420으로 인해 미국 텍사스에서 서비스 하는 앱들은 법규를 준수하기 위해 이에 대한 대응이 필요하다고 한다. 참고로 해당 api들은 iOS 26.2 이상 버전부터만 사용 가능하다. 앱 사용자 나이 받아오기target -> Capability에서 Declared Age Range 추가 do { let result = try await AgeRangeService.shared.requestAgeRange(ageGates: 18, in: vc) switch result { case .declinedSharing: /..

  • format_list_bulleted iOS/앱 개발
  • · 2025. 12. 22.
  • textsms

Mac에서 kmp/cmp iOS 빌드 시 Process 'command 'codesign'' finished with non-zero exit value 1 에러

KMP 또는 CMP로 프로젝트 빌드할 경우 요런 에러가 뜨면서 빌드 자체가 실패한 케이스. 하단에 embedAndSIgnAppleFrameworkForXcode 작업을 실패했다고 하는데, 이 작업은 kmp/cmp 환경을 세팅할때, Build phases로 프로젝트가 빌드 될 때 같이 돌아간다. kmp/cmp의 main에 있는 코드를 kotlin -> obj-c로 변환된 코드를 코드 서명을 해주는 작업을 해주는 동작인데, 이 작업에서 오류가 터지는 것. 나에게 발생한 케이스는 해당 프로젝트 파일이 icloud에 연동된 파일된 상태 + 연동중인 상태이기에 파일어 어떤 아이클라우드 관련 메타 데이터가 내부적으로 추가가 되어서, 코드 서명에 실패한 케이스였다. 만약 똑같은 오류가 발생한다면 프로젝트 파일에 ..

  • format_list_bulleted KMP CMP
  • · 2025. 11. 29.
  • textsms

Swift) 백준 2579번 계단 오르기 - S3

https://www.acmicpc.net/problem/2579 계단의 점화식 문제.특정 계단에서 얻을 수 있는 점수는 다음과 같다.n-1, n 이렇게 연속적으로 접근n-2, n 이렇게 떨어져서 접근따라서 다음과 같은 점화식이 세워짐dp[i-3]+stair[i-1]+stait[i] (연속적으로 계단에 접근한 경우)dp[i-2]+stair[i] (비연속적으로 계단에 접근한 경우)import Foundationlet n = Int(readLine()!)!var stairtArr: [Int] = []for _ in 0..

  • format_list_bulleted Algorithm/백준
  • · 2024. 5. 26.
  • textsms

Swift) 백준 2805번 나무 자르기 - S2

https://www.acmicpc.net/problem/2805 이분 탐색을 이용하여 자르는 부분의 범위를 구하는 문제. import Foundationlet nm = readLine()!.split(separator: " ").map{Int($0)!}let treeArr = readLine()!.split(separator: " ").map{ Int($0)! }var start = 1var end = treeArr.max()!while start mid { count += tree-mid } } if count >= nm[1] { start = mid+1 } else { end = mid-1 }}print(end)

  • format_list_bulleted Algorithm/백준
  • · 2024. 5. 26.
  • textsms
  • 1
  • 2
  • 3
  • 4
  • ···
  • 40
공지사항
카테고리
  • 분류 전체보기 (236)
    • 일상 (6)
      • 일상 이야기 (3)
    • Web (17)
      • Spring Boot (6)
      • CSS (3)
      • HTML (2)
      • JSP (0)
    • R (4)
    • Algorithm (88)
      • 백준 (67)
      • 프로그래머스 (19)
    • ICT COG Academy (8)
      • AI 기본 (8)
    • 계산이론 (6)
    • 데이터 베이스 (1)
    • IOT 네트워크 (1)
    • iOS (66)
      • RxSwift (2)
      • swift (16)
      • 앱 개발 (33)
      • 보안 (1)
      • UIKit (10)
      • SwiftUI (3)
    • 클린 아키텍처 (7)
    • 클린 코드 (3)
    • 컴퓨터 구조 (14)
    • 네트워크 (10)
    • 운영체제 (2)
    • KMP CMP (1)
최근 글
인기 글
최근 댓글
태그
  • #스탠포드 강의
  • #변경된 점
  • #IOS
  • #swift
  • #edwith
  • #2023
  • #부트캠프
  • #uikit
  • #8기
  • #앱개발
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바