-
Notifications
You must be signed in to change notification settings - Fork 3
Boost‐SwiftUI‐2024.01.07(화).md
유정주 JeongJu Yu edited this page Jan 14, 2025
·
4 revisions
- 2025.01.07 Tue PM 9:03 ・ 91Minutes 34seconds
- 고병학 권승용 김대황 김인환 유정주 윤동주 이준복 이창준 정종인 홍승현
- 클로버노트를 이용해 회의 내용을 기록하고, Claude를 이용해 요약, 편집했습니다.
2025년 1월 7일 화요일 스터디 내용입니다.
- expect와 require는 테스트 실패 처리 방식에서 중요한 차이를 보임
- expect: 테스트 실패 후에도 메서드 내 남은 코드 계속 실행
- require: 실패 시점에서 즉시 테스트 메서드 종료
- 한 테스트 메서드의 실패가 다른 테스트 메서드에는 영향을 주지 않음
- require 사용의 구체적 시나리오:
- 토큰 발급이 실패한 상태에서 API 호출 테스트가 무의미한 경우
- Optional 바인딩 실패 시 이후 로직 실행이 불필요한 경우
- 테스트 전제조건이 충족되지 않아 이후 테스트가 무의미한 경우
- require의 추가 기능:
- Optional 바인딩과 유사한 값 추출 기능 제공
- Guard 구문과 유사한 early exit 패턴 구현 가능
- 구조체 기반 아키텍처의 장점:
- 각 테스트가 완전히 독립된 환경에서 실행됨
- 클래스 기반 XCTest와 달리 상태 격리가 자동으로 보장됨
- setUp/tearDown 코드 없이도 깨끗한 테스트 환경 유지
- 매크로 시스템을 활용한 기능:
- 파라미터화된 테스트로 다양한 입력값 테스트 용이
- 컴파일 타임에 테스트 구조 검증
- 직관적이고 간결한 테스트 코드 작성 가능
- Sendable 프로토콜 대응:
- 도메인 모델 클래스들의 thread safety 보장 필요
- 공유 상태를 가진 객체들의 동시성 안전성 검증 필요
- Sendable 관련 컴파일러 경고 해결 방안
- 외부 라이브러리 호환성:
- Firebase: @preconcurrency 속성으로 임시 대응
- 네이버 로그인 SDK: UIKit delegate 패턴으로 인한 MainActor 종속성 문제
- SPM 지원 여부에 따른 대응 방안 차이
- GitHub Actions 환경 설정:
- macOS runner 선택과 구성
- Xcode 버전별 테스트 환경 매트릭스 구성
- Swift Testing 자동화를 위한 워크플로우 설정
- 성능 최적화:
- 외부 라이브러리 의존성 최소화 (24개 → 4개)
- 빌드 시간 단축을 위한 캐싱 전략
- 테스트 실행 시간 최적화
- 기술적 고려사항:
- iOS 버전 지원 범위에 따른 제약 (최소 iOS 15.4 필요)
- 복잡한 인터랙션과 애니메이션 구현의 용이성
- UIKit과의 혼용 전략 (UIHostingController 활용)
- 비즈니스적 고려사항:
- 사용자 기기 대응 범위
- 개발 생산성과 유지보수성
- 팀의 학습 곡선
- CollectionView 동적 레이아웃:
- estimatedItemSize 설정에 따른 성능 영향
- 셀 크기 동적 계산 로직 구현
- Auto Layout 제약조건 설정 전략
- 컬렉션뷰와 테이블뷰 선택 기준:
- 수직/수평 스크롤 요구사항
- 셀 레이아웃 커스터마이징 필요성
- 성능과 유지보수성 고려
- Auto Layout 문제 해결 접근법:
- 콘텐츠 크기 계산 로직 검증
- 제약조건 충돌 해결 방법
- 레이아웃 사이클 디버깅 도구 활용
- 성능 최적화:
- 레이아웃 갱신 최소화
- 셀 재사용 최적화
- 오프스크린 렌더링 최소화
고병학 | 권승용 | 김대황 | 김인환 | 유정주 | 윤동주 | 이준복 | 이창준 | 정종인 | 홍승현 |
---|---|---|---|---|---|---|---|---|---|
bengHak | ericKwon95 | qwerty3345 | loinsir | jeongju9216 | yoondj98 | junbok97 | SwiftyJunnos | chongin12 | WhiteHyun |