[Swift] DI 의존성 주입
·
iOS/💻 iOS Study
[23.12.12 SeSAC 수업 내용 정리] 의존성 주입 쉽게 이해하기! 브랜 주방장이 브랜 반점이라는 음식점을 열었고, 휴님은 점심 식사로 브랜 반점의 메뉴를 먹는다. 휴님 → 브랜반점 의존관계 브랜반점 → 브랜 의존관계 하위 모듈인 브랜반점에서 메서드 이름을 변경하는 순간 상위 모듈인 휴님 클래스에서 오류가 발생한다. 하위 모듈인 브랜 클래스에서 메서드 변경 시 브랜 클래스를 사용하고 있는 모든 클래스에서 오류가 발생한다. 오류를 해결하기 위해 해당 클래스를 사용하고 있는 상위 모듈에서 변경 사항을 수정해야 한다. B가 변화했을 때, A에게 영향을 미친다. ⇒ A가 B를 의존한다. 상위 모듈에서 의존하는 인스턴스를 변경했을 때 상위 모듈 내부에서 오류가 발생한다. 휴님(상위 모듈) → 브랜반점(하위..
View의 Drawing Cycle
·
iOS/💻 iOS Study
출시 프로젝트를 하면서 compositional layout을 사용하며 만난 오류를 해결하며 알게 된 내용을 정리해보고자 한다! Issue 셀에 들어갈 데이터에 맞게 동적으로 높이를 지정해야 했는데, 레이아웃 구성 시 아무리 estimated를 지정해줘도 높이가 처음부터 알맞게 들어가지 않았다. 여러 방법을 사용했지만 오른쪽 하단 날짜 레이블의 높이가 처음엔 맞지 않았고, 다른 날짜를 탭 후 다시 돌아오면 높이가 알맞게 들어오는 것을 알 수 있다. 해결! layoutIfNeeded() 를 호출하여 문제를 해결하였다. 추정치는 말 그대로 추정하여 높이를 설정하는 것이기 때문에 처음에 정확하게 들어갈 수 없었고, 셀에 데이터가 삽입 된 이후에 레이아웃 업데이트 요청을 해야했던 것이다.. View의 Drawi..
[iOS/Swift] MapKit - 위치 권한 설정을 구현해보자!
·
iOS/💻 iOS Study
위치 권한 진행 방법을 결정 하려면 권한 부여 상태와 정확도 값을 모두 확인해야 한다.위치서비스o 권한 요청권한 허용사용자 정보 접근 가능추후 거부 (설정 → 옵션 끄기)ios 시스템 설정 유도권한 거부ios 시스템 설정 유도x 권한 없음alert → ios 시스템 설정 유도 CoreLocation importimport CoreLocation 위치 매니저 인스턴스 생성private let locationManager = CLLocationManager() delegate 연결locationManager.delegate = self 프로토콜 연결해주기extension MainMapViewController: CLLocationManagerDelegate { // 사용자의 위치를 성공적..
UserDefaults와 Sandbox System
·
iOS/💻 iOS Study
💡 UserDefaults 앱을 실행하는 동안에 키-값 쌍으로 데이터를 저장하는 기본 데이터베이스 인터페이스이다. 애플에서 기본으로 제공하는 저장소로 딕셔너리와 비슷한 구조를 가지고 있다. 런타임 시점에 기본 데이터베이스가 생성되고 .plist 파일에 저장이 된다. plist 파일은 Sandbox 내에 저장되기 때문에 앱을 꺼도 데이터가 유지되고, 앱을 삭제한 경우에만 데이터가 제거가 된다. UserDefaults를 사용할 때는 대용량 데이터나 사용자 정보와 같은 데이터보다는 자동로그인 여부, 알림 설정 여부, 인앱 결제 여부, 간단한 사용자 기본 설정 등과 같은 단일 데이터를 저장한다. 💡 App Sandbox ✅ Sandbox란? App Sandbox는 보호된 영역 안에서 프로그램을 작동시키는 보안 ..