Skip to content

Boost‐SwiftUI‐2024.01.07(화).md

유정주 JeongJu Yu edited this page Jan 14, 2025 · 4 revisions

원본 텍스트 파일

2024.01.07(화).txt


스터디 시간 및 참여자

  • 2025.01.07 Tue PM 9:03 ・ 91Minutes 34seconds
  • 고병학 권승용 김대황 김인환 유정주 윤동주 이준복 이창준 정종인 홍승현
  • 클로버노트를 이용해 회의 내용을 기록하고, Claude를 이용해 요약, 편집했습니다.

iOS 개발 스터디 상세 정리

2025년 1월 7일 화요일 스터디 내용입니다.

Swift Testing Framework 심층 분석

expect vs require의 상세 동작 방식

  • expect와 require는 테스트 실패 처리 방식에서 중요한 차이를 보임
    • expect: 테스트 실패 후에도 메서드 내 남은 코드 계속 실행
    • require: 실패 시점에서 즉시 테스트 메서드 종료
    • 한 테스트 메서드의 실패가 다른 테스트 메서드에는 영향을 주지 않음
  • require 사용의 구체적 시나리오:
    • 토큰 발급이 실패한 상태에서 API 호출 테스트가 무의미한 경우
    • Optional 바인딩 실패 시 이후 로직 실행이 불필요한 경우
    • 테스트 전제조건이 충족되지 않아 이후 테스트가 무의미한 경우
  • require의 추가 기능:
    • Optional 바인딩과 유사한 값 추출 기능 제공
    • Guard 구문과 유사한 early exit 패턴 구현 가능

Swift Testing의 구조적 특징

  • 구조체 기반 아키텍처의 장점:
    • 각 테스트가 완전히 독립된 환경에서 실행됨
    • 클래스 기반 XCTest와 달리 상태 격리가 자동으로 보장됨
    • setUp/tearDown 코드 없이도 깨끗한 테스트 환경 유지
  • 매크로 시스템을 활용한 기능:
    • 파라미터화된 테스트로 다양한 입력값 테스트 용이
    • 컴파일 타임에 테스트 구조 검증
    • 직관적이고 간결한 테스트 코드 작성 가능

Swift 6 마이그레이션 상세 가이드

마이그레이션 주요 포인트

  • Sendable 프로토콜 대응:
    • 도메인 모델 클래스들의 thread safety 보장 필요
    • 공유 상태를 가진 객체들의 동시성 안전성 검증 필요
    • Sendable 관련 컴파일러 경고 해결 방안
  • 외부 라이브러리 호환성:
    • Firebase: @preconcurrency 속성으로 임시 대응
    • 네이버 로그인 SDK: UIKit delegate 패턴으로 인한 MainActor 종속성 문제
    • SPM 지원 여부에 따른 대응 방안 차이

CI/CD 파이프라인 구축

  • GitHub Actions 환경 설정:
    • macOS runner 선택과 구성
    • Xcode 버전별 테스트 환경 매트릭스 구성
    • Swift Testing 자동화를 위한 워크플로우 설정
  • 성능 최적화:
    • 외부 라이브러리 의존성 최소화 (24개 → 4개)
    • 빌드 시간 단축을 위한 캐싱 전략
    • 테스트 실행 시간 최적화

UI 아키텍처 현대화

SwiftUI 도입 검토

  • 기술적 고려사항:
    • iOS 버전 지원 범위에 따른 제약 (최소 iOS 15.4 필요)
    • 복잡한 인터랙션과 애니메이션 구현의 용이성
    • UIKit과의 혼용 전략 (UIHostingController 활용)
  • 비즈니스적 고려사항:
    • 사용자 기기 대응 범위
    • 개발 생산성과 유지보수성
    • 팀의 학습 곡선

레이아웃 시스템 최적화

  • CollectionView 동적 레이아웃:
    • estimatedItemSize 설정에 따른 성능 영향
    • 셀 크기 동적 계산 로직 구현
    • Auto Layout 제약조건 설정 전략
  • 컬렉션뷰와 테이블뷰 선택 기준:
    • 수직/수평 스크롤 요구사항
    • 셀 레이아웃 커스터마이징 필요성
    • 성능과 유지보수성 고려

레이아웃 디버깅 전략

  • Auto Layout 문제 해결 접근법:
    • 콘텐츠 크기 계산 로직 검증
    • 제약조건 충돌 해결 방법
    • 레이아웃 사이클 디버깅 도구 활용
  • 성능 최적화:
    • 레이아웃 갱신 최소화
    • 셀 재사용 최적화
    • 오프스크린 렌더링 최소화
Clone this wiki locally