안녕하세요. 김소월입니다. 👋

흰둥이와 나란히 앉아 매일 코딩해요.

iOS 개발자를 위한 면접 질문 목록 (레벨 0)

1. 컴퓨터 시스템에서 CPU, RAM, 저장 장치의 역할과 이들이 어떻게 상호작용하는지 설명해주세요. 💡 힌트: 앱 실행 과정을 단계별로 생각해보세요. 저장 장치에서 앱 바이너리 로드 RAM에 코드와 초기 데이터 적재 CPU가 명령어 실행 필요시 추가 리소스 로드 답변: CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 장치입니다. RAM에는 현재 실행되는 프로그램의 명령어와 데이터를 저장합니다. 전원을 끄면 저장된 내용이 사라지는 휘발성 저장 장치입니다. 보조 기억 장치에는 전원이 꺼져도 보관할 프로그램을 저장합니다. RAM보다 느리지만 많의 양의 데이터를 저장할 수 있습니다. ...

September 22, 2025 · 15 min · 3006 words · Me

[번역] SwiftUI / Managing User Interface State (애플 공식 문서)

Overview 해당 데이터가 필요한 뷰들의 가장 가까운 공통 조상 뷰에 상태(state)로 데이터를 저장해서, 여러 뷰가 공유하는 단일한 진실의 원천(single source of truth)을 만드세요. 이 데이터를 Swift 프로퍼티로 읽기 전용으로 제공하거나, 바인딩(binding)을 사용해 상태와 양방향으로 연결할 수 있습니다. SwiftUI는 이 데이터의 변경을 감시하고, 필요할 때마다 영향을 받는 뷰들을 업데이트합니다. 상태 프로퍼티를 영구적인 저장 용도로 사용하면 안됩니다. 상태 변수의 생명 주기는 뷰의 생명 주기와 동일하기 때문입니다. 대신 버튼의 하이라이트 상태, 필터 설정, 현재 선택된 리스트 항목처럼 사용자 인터페이스에만 영향을 주는 일시적인 상태를 관리할 때 사용하세요. 또한 앱의 데이터 모델을 수정하기 전, 프로토타입을 만드는 동안 이러한 저장 방식을 임시로 사용하는 것도 편리할 수 있습니다. ...

December 15, 2025 · 4 min · 827 words · Me

[번역] Core Location / Creating a Location Push Service Extension (애플 공식 문서)

Overview iOS 15부터 제공되는 Location Push Service Extension은 앱이 실행 중이 아닐 때에도 iOS나 iPadOS 기기에 위치를 요청할 수 있게 해주는 에너지 효율적인 방법입니다. 앱에 Location Push Service Extension이 포함되어 있으면, 시스템은 서버로부터 Apple Push Notification service(APNs) 위치 푸시를 받을 때 해당 확장을 활성화합니다. 이 확장이 동작하려면, 앱이 사용자로부터 항상 허용(Always) 권한(CLAuthorizationStatus.authorizedAlways)을 요청하고 승인받아야 합닌다. 항상 허용 권한에 대한 자세한 내용은 Requesting authorization to use location services와 requestAlwaysAuthorization()을 참고하세요. 사용자의 권한이 허용되면, 확장은 사용자의 위치를 조회하고 앱의 목적에 따라 해당 정보를 처리할 수 있습니다. 서버는 location 푸시 타입을 사용해 APNs로 요청을 전송합니다.APNs로 요청을 보내는 방법에 대한 자세한 내용은 Sending noification requests to APNs를 참고하세요. ...

December 15, 2025 · 3 min · 575 words · Me

[번역] Core Location / Suspending Authorization Requests (애플 공식 문서)

Overview 앱의 온보딩 과정에 위치 정보 업데이트를 포함하고 있다면, 사용자에게 Core Location 권한을 요청하는 시점을 미루고 싶을 수 있습니다. 앱에서 CLServiceSession을 적절한 시점에 생성함으로써 자동으로 표시되는 권한 요청 알림창을 억제할 수 있습니다. 그럼 다음 diagnostic 프로퍼티를 순회하여 사용자가 선택한 권한 수준을 확인할 수 있습니다. 아래 예제는 권한 요청을 미루는 방법을 보여줍니다. func doPromptingFlow() async { await showHelloPrompt() // Obtain a session. This causes Core Location to display the authorization prompt. let session = CLServiceSession(authorization: .whenInUse) // Wait for interaction with the prompt to complete (successfully or with denial) for try await diagnostic in session.diagnostics { if !diagnostic.authorizationRequestInProgress { // A denial occurred. break } } await doFurtherWork() } 이 동작을 제어하려면 앱의 Info.plist 파일에 CLRequireExplicitServiceSession 속성을 추가하세요. ...

December 10, 2025 · 1 min · 117 words · Me

[번역] Core Location / Handling Location Updates in the Background (애플 공식 문서)

Overview 일부 Apple 기기에서는 운영체제가 백그라운드 앱의 실행을 일시 중단(suspend)하여 배터리 수명을 절약합니다. 예를 들어, iOS, iPadOS, 그리고 watchOS에서는 대부분의 앱이 백그라운드로 전환된 직후 시스템에 의해 실행이 중단됩니다. 이러한 일시 중단 상태에서는 앱이 실행되지 않으며 시스템으로부터 위치 업데이트를 받을 수 없습니다. 대신 시스템은 위치 업데이트를 큐에 저장해두었다가, 앱이 다시 포그라운드나 백그라운드에서 실행될 때 이를 한꺼번에 전달합니다. 앱이 보다 시의적절하게 업데이트를 받아야 하는 경우, 위치 서비스가 활성화되어 있는 동안 시스템이 앱을 일시 중단하지 않도록 요청할 수 있습니다. ...

December 5, 2025 · 2 min · 414 words · Me

[번역] Core Location / Supporting Live Updatesin SwiftUI and Mac Catalyst Apps (애플 공식 문서)

Overview iOS 17 이상에서는 Core Location​이 Swift Concurrency​의 async/await 기능을 사용한 실시간 업데이트를 지원합니다. 실시간 업데이트를 적용하려면 SwiftUI 및 Mac Catalyst 앱에서 라이프사이클 이벤트를 지원해야 하며, 이를 통해 @main 앱이 백그라운드 런-루프의 생성과 재개를 명시적으로 지원하도록 구현해야 합니다. 이 기능을 통해 시스템은 Core Location 이벤트를 앱에 전달할 수 있으며, 앱이 백그라운드에서 다시 돌아오거나 실행될 때, 혹은 크래시 후 재실행될 때에도 이벤트 전달이 다시 이어질 수 있습니다. Adding lifecycle events to SwiftUI 라이프사이클 이벤트를 지원하도록 하려면 앱에 세 가지 컨포넌트를 추가해야 합니다: ...

November 30, 2025 · 3 min · 459 words · Me

[번역] Core Location / Getting Heading and Course Information (애플 공식 문서)

Overview 내베게이션 앱은 사용자가 목적지로 이동하도록 안내하기 위해 보통 방향(heading)과 진행 방향(course) 정보를 사용합니다. 사용자의 기기 방향은 자기 북극(magnetic) 또는 진북을 기준으로 한 현재 기기의 방향을 나타냅니다. GPS가 탑재된 기기는 이동 중인 방향을 나타내는 진행 방향 정보를 제공합니다. iOS의 나침반 앱은 아래 그림과 같이 이 방향 정보를 이용해 자기 나침반 인터페이스를 구현합니다. 증강 현실(AR) 앱은 이 정보를 사용하여 사용자가 어느 방향으로 향하고 있는지를 판단할 수도 있습니다. Get the current heading 방향(heading) 정보는 사용자의 기기가 현재 어떤 방향을 향하고 있는지를 판단하는 데 사용됩니다. 예를 들어, 증강 현실 앱은 현재 방향 정보를 활용하여 사용자의 화면에 어떤 정보를 표시할 지 결정할 수 있습니다. 방향 정보는 일반적으로 기기의 윗부분을 기준으로 판단하지만, CLLocationManager 객체의 headingOrientation 속성을 사용하여 값이 판단되는 기준을 설정할 수도 있습니다. ...

November 25, 2025 · 2 min · 264 words · Me

[번역] Core Location / Monitoring the user's proximity to geographic regions (애플 공식 문서)

Overview 지오펜싱은 사용자가 지리적 영역에 들어오거나 벗어날 때 앱이 알림을 받을 수 있는 방법입니다. 위치 관련 작업을 수행하기 위해 영역 모니터링(region monitoring)을 사용할 수 있습니다. 예를 들어, 아래 그림에 표시된 것처럼 미리 알림 앱은 사용자가 특정 위치에 도착하거나 떠날 때 미리 알림을 트리거하는 데 이를 사용합니다. iOS에서는 시스템이 영역을 모니터링하고, 조건이 충족됨(satisfied)와 충족되지 않음(unsatisifed) 상태 사이에서 변경될 때 필요에 따라 앱을 깨워줍니다. macOS에서는 조건 모니터링이 앱이 실행 중일 때(포그라운드 또는 백그라운드 상태 모두) 그리고 사용자의 시스템이 깨어 있는 동안에만 작동합니다. 시스템은 영역 관련 알림을 전달하기 위해 Mac 앱을 자동으로 실행하지 않습니다. ...

November 20, 2025 · 2 min · 374 words · Me

[번역] Core Location / Getting the current location of a device (애플 공식 문서)

Overview Core Location은 위치 관련 데이터를 가져오기 위해 여러 가지 서비스를 제공하지만, 가장 일반적인 서비스는 기기의 현재 위치를 반환합니다. 이 정보는 아래와 같은 용도로 사용할 수 있습니다. 도보, 자동차 또는 기타 교통수단을 통한 네비게이션을 지원합니다. 주변의 관심 지점(POI)를 식별합니다. 사람과 가까운 거리를 기준으로 검색 결과를 필터링합니다. 사람의 위치를 지도에 표시합니다. 사람의 위치를 친구와 공유합니다. 사진의 위치를 태그합니다. 소셜 미디어에 체크인합니다. 운동이나 하이킹 중 이동 경로를 추적합니다. Core Location은 Wi-Fi, 셀룰러, GPS 라디오 등 다양한 하드웨어를 사용하여 현재 위치를 결정할 수 있습니다. Core Location은 위치를 알아내기 위해 모든 라디오를 사용할 필요는 없습니다. 대신, 필요한 위치 데이터를 가장 전력-효율적인 방식으로 얻기 위해 선택적으로 라디오를 활성화합니다. CLLocationManager 객체의 설정은 시스템이 어떤 라디오를 사용할지와 앱의 전력 소모에 영향을 줍니다. ...

November 15, 2025 · 3 min · 562 words · Me

[번역] Swift Concurrency / Enable Data Race Safety Checking (Migrating to Swift 6)

Swift 프로젝트에서 데이터 경합 안전성 검사를 활성화하려면 Swift 6 언어 모드를 사용하세요. Swift 6에서는 기본적으로 전체 데이터 경합 안전성 검사를 수행합니다. Enable the Swift 6 language mode Swift 6 mode with Swift packages swift-tools-version을 6.0으로 사용하는 Package.swift 파일은 모든 타깃에 대해 Swift 6 언어 모드를 사용합니다. 패키지 전체에 대해서는 Package의 swiftLanguageModes 속성을 사용해 언어 모드를 설정할 수도 있습니다. 또한 새로운 swiftLanguageMode 빌드 설정을 사용하여 필요에 따라 타깃 별로 언어 모드를 달리할 수도 있습니다. ...

November 5, 2025 · 3 min · 606 words · Me