Uiwindow란
1. 개요 UIWindow는 UIView의 서브클래스 iOS 앱 화면 출력의 최상단 컨테이너 일반적으로 앱당 하나의 UIWindow 사용 보통 AppDelegate나 SceneDelegate에서 생성 및 설정 2. 주요 역할 뷰 계층의 루트 역할 이벤트 전달의 시작점 (터치, 키보드 등) 상태 변화에 따른 UI 표시 (예: 키보드, 상태 표시...
1. 개요 UIWindow는 UIView의 서브클래스 iOS 앱 화면 출력의 최상단 컨테이너 일반적으로 앱당 하나의 UIWindow 사용 보통 AppDelegate나 SceneDelegate에서 생성 및 설정 2. 주요 역할 뷰 계층의 루트 역할 이벤트 전달의 시작점 (터치, 키보드 등) 상태 변화에 따른 UI 표시 (예: 키보드, 상태 표시...
개요 iOS 앱을 개발하다 보면 앱 전체의 상태를 관리하고 시스템 이벤트에 반응하는 기능이 필요하다. 이 중심에 있는 객체가 바로 UIApplication이다. 이 글에서는 UIApplication이 어떤 역할을 하고, 어떻게 사용하는지 핵심만 정리한다. UIApplication이란? UIApplication은 앱의 전반적인 상태를 제어하고 ...
이유 1: 단일 UI 이벤트 루프 구조 (Single-threaded UI loop) iOS (UIKit)는 단일 UI 루프 모델을 사용. 사용자의 터치 → 이벤트 전달 → 화면 갱신은 모두 메인 스레드에서 순차적으로 일어남 여러 스레드에서 UI를 동시에 변경하면, 이벤트 순서가 꼬이거나 충돌이 발생할 수 있음 그래서 UIKit은...
Key - Value 쌍으로 이루어진 순서 없는 컬렉션. key는 유일(unique) 해야 함 키는 Hashable해야 함 (String, Int, UUID 등 기본 타입은 모두 가능) value는 중복 가능 key를 이용해 빠르게 값을 조회할 수 있음 (O(1)) 예제 코드 let dict: [String: Int] = [ ...
문제 : 빌드를 한 후 첫 로그인은 성공하지만 로그아웃 후 다시 로그인을 하면 메인뷰컨트롤러로 넘어가지 않는 문제 발생. 기존 방식 connection to notion 버튼 탭 노션 인증 페이지 사파리로 열기 사파리에서 인증완료되면 서버로 요청한 후 앱 스키마로 리다이렉트 앱 스키마로 sceneDelegate에서 url 쿼리 처리...
트러블 슈팅 원인 로그인 시 응답된 bot_id를 저장한 후 그 id값으로 사용자의 데이터를 요청할 때 id값이 UserDefaults에 저장되기 전에 사용자의 데이터를 요청하는 문제 발생 해결 sceneDelegate에서 앱 스키마를 통해 botId 쿼리값을 받아서 mainViewModel의 savedBotId PublishRel...
객체 간의 이벤트를 전달하는 시스템 기능 객체 간의 직접적인 연결 없이 이벤트 전달 가능 뷰 컨트롤러 간 데이터나 이벤트 전달 가능 비동기적으로 실행 가능하여 UI업데이트에 활용 가능 기본 개념 post() - 이벤트 발생 특정 이벤트가 발생하면 알림을 보내 다른 객체에 전달함 Noti...
present는 UIViewController에서 다른 UIViewController를 표시하는 메서드로, 현재 화면에 새로운 뷰 컨트롤러를 모달 방식으로 표시할 때 사용됨. 1. 기본 문법 func present(_ viewControllerToPresent: UIViewController, animated flag: ...
iOS 앱 개발에서 스크롤 인터랙션은 사용자 경험의 핵심 요소입니다. UIScrollViewDelegate는 스크롤 뷰의 다양한 동작을 감지하고 제어할 수 있게 해주는 강력한 프로토콜입니다. 이 글에서는 ScrollViewDelegate의 핵심 개념부터 실제 구현까지 상세하게 다루어보겠습니다. ScrollViewDelegate란? UIScrollVi...
Node 구조체의 멤버변수 Property의 타입이 제네릭이어서 로 했으나 서버에서 응답된 json은 제네릭 타입으로 변경 불가능. → 노션 속성의 다양한 타입을 서버에서 어떤 속성이든 한가지 형태의 객체로 재구조화하여 대응. Node struct의 멤버변수도 서버에서 정의한 객체의 형태로 변경하여 디코딩 가능하도록 변경. Node...