전체 글

성장하는 공공돌 블로그🧸 💻
트러블 슈팅

AutoLayout - 화면 겹침 현상 (StackView 내 CustomView 겹침)

문제 상황 UIStackView 내부에 WorkplaceContainerView, PayContainerView를 배치했음에도 불구하고, 두 뷰가 겹쳐서 출력되는 현상이 발생내부 요소들이 정상적으로 구성되었음에도 StackView가 자식 뷰의 높이를 인식하지 못해 UI가 깨짐원인 분석UIStackView는 자식 뷰의 명시적인 높이 제약 또는 intrinsic content size가 없는 경우, 뷰의 높이를 0으로 인식함WorkplaceContainerView와 PayContainerView 모두 내부에 UI를 배치한 container 뷰만 있고, 해당 뷰의 하단 요소를 기준으로 전체 높이를 계산하는 제약이 빠져있었음distribution을 .equalSpacing으로 설정한 것도 자식 뷰 간의 간격 계..

트러블 슈팅

NSAttributedString - 적용 순서로 인해 강조 색상이 반영되지 않음

문제 상황UILabel에서 "근무지 *"와 같이 특정 문자를 강조하려 했으나 에 적용한 색상이 반영되지 않음NSMutableAttributedString을 사용했음에도 불구하고 문자가 회색(gray900)으로 표시되어 의도한 빨간색(accent)이 보이지 않는 문제 발생원인 분석NSMutableAttributedString은 속성을 덮어쓰기 방식으로 적용됨전체 문자열에 .foregroundColor = gray900를 마지막에 적용하면서,앞서 설정한 *에 대한 빨간색 설정이 덮어써져 무효화됨해결방안기본 스타일(전체 폰트 및 색상)은 먼저 설정하고특정 부분 강조()는 가장 마지막에 스타일을 적용하도록 순서 조정private let workplaceTitle = UILabel().then { let f..

iOS/Design Pattern

[ Coordinator ] Coordinator 패턴이란?

Coordinator 패턴이란?코디네이터(Coordinator) 패턴은 iOS 앱에서 ViewController의 "화면 전환" 책임을 분리하여, 별도의 객체인 코디네이터가 화면 흐름과 네비게이션을 관리하도록 하는 디자인 패턴이다.이 패턴의 핵심 목적은 ViewController의 역할을 단순화하고, 화면 간 전환에 따른 결합도를 낮추는 것이 목적이다.왜 코디네이터 패턴이 필요할까?Coordinator 객체는 화면 전환(네비게이션)과 관련된 모든 로직을 담당하게 되는데 ViewController는 더 이상 다른 ViewController를 직접 생성하거나, 네비게이션을 직접 수행하지 않는다.ViewController는 단지 자신의 코디네이터에게 "다음 화면으로 이동해달라"고 요청만 할 뿐이다. Coord..

트러블 슈팅

Firebase Auth - 앱을 재설치해도 자동로그인이 유지되는 현상

문제 상황개발 도중 DB를 수정하는 과정에서 데이터가 불일치하는 경우로 인해앱의 무한 로딩이 발생이를 해결하기 위해 앱을 삭제 후 재설치해도자동로그인이 유지되는 현상이 발생함원인 분석Firebase Auth는 로그인 하게 되면 Auth.auth().currentUser에 현재 로그인 중인 유저를 담게 되는데 Keychain과 동일한 형식으로 정보를 담아서 앱 삭제 후 재 설치 시에도 정보가 담겨있어로그인 되어있는 상태가 유지됨해결방안앱을 최초로 실행한 경우 로그아웃하는 작업을 수행테스트 서버와 배포 서버를 나눠 수정하는 과정에서 데이터가 불일치 하는 상황을 피함let hasLaunchedBefore = UserDefaults.standard.bool(forKey: "hasLaunchedBefore")if..

iOS/면접 질문

[ iOS 면접 질문 ] 프로세스와 스레드의 차이점, 그리고 iOS에서의 프로세스와 스레드 관리 방법에 대해 설명해주세요.

프로세스와 스레드의 차이점, 그리고 iOS에서의 프로세스와 스레드 관리 방법에 대해 설명해주세요.프로세스는 실행 중인 프로그램의 단위로, 독립된 메모리 공간과 시스템 자원을 가지며 다른 프로세스와 자원을 공유하지 않습니다. 반면 스레드는 프로세스 내에서 실행되는 작업의 흐름 단위로, 같은 프로세스 내의 다른 스레드들과 메모리 공간을 공유합니다. 그래서 스레드는 프로세스보다 생성과 전환이 빠르고 가볍지만, 자원을 공유하기 때문에 동기화 문제나 경쟁 상태에 더 취약할 수 있습니다.iOS에서는 하나의 앱이 하나의 프로세스로 실행되며, 기본적으로 메인 스레드와 여러 백그라운드 스레드로 구성됩니다. 메인 스레드는 UI 업데이트나 사용자 입력 처리를 담당하며, 이 스레드가 막히면 앱이 응답하지 않는 현상이 발생할 ..

iOS/면접 질문

[ iOS 면접 질문 ] 싱글톤 패턴(Singleton Pattern)이란 무엇이며, 어떤 경우에 사용하나요?

싱글톤 패턴(Singleton Pattern)이란 무엇이며, 어떤 경우에 사용하나요?싱글톤 패턴은 애플리케이션 전역에서 하나의 인스턴스만 생성되도록 보장 하는 디자인 패턴입니다. 주로 공통된 설정, 네트워크 관리, 데이터 저장소, 로깅 등의 공유 리소스를 관리할 때 사용됩니다. 이 패턴을 통해 인스턴스를 여러 곳에서 접근 가능하면서도 일관성을 유지할 수 있습니다.싱글톤 패턴의 장점과 단점을 설명해주세요.싱글톤의 장점은 하나의 인스턴스를 여러 곳에서 재사용할 수 있어 메모리 사용을 줄이고, 전역 접근이 가능해 어디서든 쉽게 사용할 수 있으며, 일관된 상태를 유지하는 데 효과적입니다.단점은 가장 큰 문제는 테스트가 어렵다는 점입니다. 싱글톤은 전역 상태를 가지기 때문에 하나의 테스트가 다른 테스트에 영향을 ..

Sheep1sik
공공돌