안녕하세요?
오늘은 많은 내용들에 대해 공부했어요
그리고 그걸 정리해봤답니다

그럼 레츠 고
async/await
- Swift 5.5부터 등장한 비동기 문법
- Swift 6부터 완전히 안정화됨
- 기존 콜백 기반 코드를 가독성 좋게 개선 가능
ARC & Memory Leak
- 메모리 누수(memory leak)는 강한 참조 사이클로 발생
- 주로 클로저에서 [strong self] 사용 시
- 해결: weak self → 캡처된 객체가 옵셔널됨
- 레거시 코드에서 unowned → weak으로 변경 권장
- Xcode의 Memory Graph, 외부 메모리 누수 탐지 라이브러리(memory leak detector)로 추적 가능
- ARC(Automatic Reference Counting)는 과제 전형 평가 항목에 포함되기도 함
코드 스타일 / 가독성
- guard let / if let으로 유효성 검사
- guard 구문 뒤에는 1줄 개행 → 문맥 분리, 가독성 향상
- if문이 복잡하면 삼항 연산자 사용 고려
- isHidden 등 뷰 속성은 명확하게 제어
실험 및 기능 롤아웃
- Amplitude, Firebase로 사용자 이벤트 추적 및 실험 가능
- 실험용 코드는 운영 시점에 삭제하거나 주석 처리 필요
- Rollout(점진적 적용), Rollback(되돌리기) 개념 숙지
패키지 관리
- 요즘은 SPM(Swift Package Manager) 많이 씀
- 빠르고 오류 적음
- CocoaPods는 레거시, 잘 안 씀
버전 관리
버전 번호는 x.y.z 형식으로 표현
- x: 큰 변화 (브레이킹 체인지)
- y: 기능 추가/정기 릴리즈
- z: 버그 수정/핫픽스
UITableView & Cell 재사용
- indexPath는 [섹션, row] 형태
- TableView 상위에 ScrollView 겹치면 스크롤 이슈 생길 수 있음
- 셀을 매번 새로 만들지 않고 재사용(reuse)함
- → 셀 상태 초기화 중요 (prepareForReuse 활용)
- .isHidden 같은 속성은 셀 재사용 시 상태 초기화 필요
Firestore 관련
- getDocuments 대신 addSnapshotListener로 실시간 반영
- 데이터 초기화 (self.messages = []) 이유 생각하기 → 새로운 데이터 수신 시 초기화 필요
- order(by:)로 정렬
- Date()는 기본적으로 영국 시간 기준
- → 한국 시간 맞추려면 TimeZone 조정 필요
키보드 대응
- 직접 노티 받아서 구현 가능
- 또는 IQKeyboardManager 같은 라이브러리 활용
- 키보드 올라올 때 뷰 밀리거나 입력창 가려지지 않게 처리
기타
- NotificationCenter: 앱 내부 이벤트 처리에 유용, 한 번 정리해볼 것
- getDocuments → addSnapshotListener로 변경 시점 판단 필요
일요일아 가지마
주 5일제 믿을 수 없어
'TIL' 카테고리의 다른 글
250523 TIL | firebase SPM과 Pod이 꼬이다... 해결방법...! (2) | 2025.05.23 |
---|---|
250520 TIL | 셀 재사용부터 앱 생명주기까지 (0) | 2025.05.20 |
250510 TIL | 채팅 기능 구현하며 내용 공부함 (0) | 2025.05.10 |
250507 TIL | FireStore 사용법 익히기, 딕셔너리 활용 (0) | 2025.05.07 |
250506 TIL | Firebase Firestore 데이터 가져오기, 연휴 끝🙀 (0) | 2025.05.06 |