>>>>>

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

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

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

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

September 22, 2025 · 15 min · 3006 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

[번역] Swift Concurrency / Migration Strategy (Migrating to Swift 6)

모듈에서 완전한 동시성 검사(complete concurrency checking)를 활성화하면 컴파일러가 수많은 데이터 경합 안정성 문제를 알려줄 수 있습니다. 수백 개, 심지어 수천 개의 경고가 발생하는 것도 드문 일이 아닙니다. 특히 Swift의 데이터 격리 모델을 막 배우기 시작한 단계라면, 이렇게 방대한 문제를 마주했을 때 감당하기 어려운 벽처럼 느껴질 수 있습니다. 패닉에 빠지지 마세요. 대부분의 경우, 몇 가지 변경만으로도 상단한 진전을 이루게 될 것입니다. 그리고 그렇게 진행하는 동안 Swift의 동시성 시스템이 어떻게 동작하는지에 대한 개념도 빠르게 습득할 수 있게 됩니다. ...

October 30, 2025 · 3 min · 530 words · Me

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

전통적으로, 변경 가능한 상태(Mutable State)는 런타임에서 세심한 동기화(Synchronization)을 통해 수동으로 보호해야 했습니다. 락(Lock)과 큐(Queue) 같은 도구를 사용하여 데이터 경합을 방지하는 일은 전적으로 개발자의 몫이었습니다. 이는 처음부터 올바르게 구현하기도 어렵지만, 시간이 지나면서 계속 올바르게 작동하도록 유지하는 것은 더더욱 어렵습니다. 동기화가 필요한지 여부를 판단하는 것조차 매우 어려울 수 있습니다. 최악의 경우, 스레드에 안전하지 않은 코드는 런타임에서 예기치 못한 동작이 일어난다고 보장되지 않습니다. 이런 코드는 겉보기에는 잘 동작하는 것처럼 보일 수 있으며, 이는 데이터 경합 특유의 잘못되고 예측 불가능한 동작이 드러나려면 매우 이례적인 조건이 필요하기 때문입니다. ...

October 25, 2025 · 13 min · 2686 words · Me

[번역] Core Location / CLLocationManager / requestAlwaysAuthorization() (애플 공식 문서)

iOS 8.0+ ⏐ iPadOS+ ⏐ Mac Catalyst 13.1+ ⏐ macOS 10.15+ ⏐ watchOS 2.0+ func requestAlwaysAuthorization() Mentioned in Creating a location push service extension Discussion 앱이 위치 정보를 받으려면 이 메서드나 requestWhenInUseAuthorization() 메서드를 반드시 호출해야 합니다. 이 메서드를 호출하려면 앱의 Info.plist 파일에 NSLocationAlwaysUsageDescription 키와 NSLocationWhenInUseUsageDescription 키가 모두 있어야 합니다. requestAlwaysAuthorization()은 현재 권한 상태가 다음 중 하나일 때 호출할 수 있습니다. 결정되지 않음(Not Determined) - CLAuthorizationStatus.notDetermined 앱을 사용하는 동안 허용(When In Use) = CLAuthorizationStatus.authorizedWhenInUse 사용자가 권한 선택을 한 후, 위치 업데이트를 받으려면 CLLocationManager 델리게이트의 locationManager(_:didUpdateLocations:) 메서드를 사용하세요. ...

October 25, 2025 · 3 min · 498 words · Me

[번역] Core Location / Requesting Authorization to Use Location Services (애플 공식 문서)

Overview 위치 데이터는 민감한 정보이며, 이를 사용하는 것은 앱 사용자에게 개인정보 보호와 관련된 영향을 끼칩니다. 사람들이 자신의 정보를 스스로 통제할 수 있도록, 시스템은 앱이 권한을 얻기 전까지 위치 데이터를 사용할 수 없도록 합니다. 이 권한 부여 과정에서 한 번의 인터럽션이 발생하며, 이때 시스템은 사용자에게 앱의 위치 데이터 사용 요청을 허용할지 거부할지 묻습니다. 초기 요청 이후에는 시스템이 앱의 권한 상태를 저장하고, 다시는 사용자에게 요청을 표시하지 않습니다. 사용자가 왜 위치 데이터가 필요한지 이해할 수 있도록, 권한 요청은 반드시 앱에서 해당 데이터가 필요한 기능을 사용할 때만 하세요. 필요한 순간 직전에 요청하면 사용자가 권한을 허용할 가능성이 높아집니다. 반대로 앱이 실행되자마자 요청하거나 위치 데이터를 명확히 사용하지 않는 부분에서 요청하면, 사용자가 의도를 오해하고 권한 요청을 거부할 수 있습니다. ...

October 20, 2025 · 5 min · 892 words · Me

[번역] Core Location / Configuring Your App to Use Location Services (애플 공식 문서)

Overview 대부분의 Apple 기기에서 제공되는 위치 데이터는 앱의 콘텐츠에 추가적인 맥락과 정보를 더할 수 있게 해줍니다. 예를 들어, 사용자의 실제 위치를 지도에 표시하여 주변을 탐색하도록 하거나, 식당과 상점 목록에 위치 데이터를 적용해 근처에 없는 선텍지를 제외할 수 있습니다. 또한 특정 기기나 지정된 지역 근처에 있을 때 알림을 제공하는 데에도 위치 데이터를 활용할 수 있습니다. 이러한 모든 사용 사례와 그 외 다양한 경우에 대해 Core Location 프레임워크는 필요한 위치 데이터에 접근할 수 있도록 지원합니다. ...

October 15, 2025 · 5 min · 917 words · Me

[번역] UNUserNotifications / Customizing the Appearance of Notifications (애플 공식 문서)

Overview iOS 기기가 알림을 수신하면 시스템은 두 단계로 알림의 내용을 표시합니다. 먼저, 제목과 부제목, 그리고 본문 텍스트 두세 줄에서 네 줄 정도가 포함된 축약된 배너(abbreviated banner)를 보여줍니다.사용자가 축약된 배너를 누르면, iOS는 알림과 관련된 액션까지 포함된 전체 알림 인터페이스를 표시합니다. 시스템은 축약된 배너 인터페이스를 제공하지만, Notification Content App Extension을 사용해 전체 인터페이스를 사용자화할 수 있습니다. Notification Content App Extension은 사용자 정의 알림 인터페이스를 표시하는 뷰 컨트롤러를 관리합니다. 이 뷰 컨트롤러는 알림에 대해 기본적으로 제공되는 시스템 인터페이스를 보완하거나 교체할 수 있습니다. 이를 통해 아래와 같은 작업을 할 수 있습니다: ...

October 15, 2025 · 5 min · 855 words · Me

[번역] UNUserNotifications / Modifying Content in Newly Delivered Notifications (애플 공식 문서)

Overview 아래와 같은 경우에는 사용자의 iOS 기기에서 푸시 알림의 콘텐츠를 수정해야 할 수 있습니다: 암호화된 형식으로 전송된 데이터를 복호화해야 할 때 최대 페이로드 크기를 초과하는 이미지나 다른 미디어 첨부 파일을 다운로드해야 할 때 사용자의 기기의 데이터를 반영해 알림의 콘텐츠를 업데이트해야 할 때 푸시 알림을 수정하려면 iOS 앱 번들에 포함되는 Notification Service App Extension이 필요합니다. 이 익스텐션은 시스템이 사용자에게 알림을 표시하기 전에 푸시 알림의 내용을 먼저 받아서, 알림 페이로드를 업데이트할 시간을 제공합니다. 또한 익스텐이 어떤 알림을 처리할지 개발자가 직접 제어할 수 있습니다. ...

October 10, 2025 · 3 min · 504 words · Me

[번역] UNUserNotifications / Pushing Background Updates to Your App (애플 공식 문서)

Overview 앱의 서버 기반 콘텐츠가 드물게 또는 불규칙하게 변경된다면, 새로운 콘텐츠가 사용 가능할 때 앱에 알려주기 위해 백그라운드 알림을 사용할 수 있습니다. 백그라운드 알림은 경고를 표시하거나, 사운드를 재생하거나, 앱 아이콘에 배지를 표시하지 않는 푸시 알림입니다. 이 알림은 앱을 백그라운드에서 깨워주고, 앱이 서버에서 다운로드를 시작하고 콘텐츠를 업데이트할 시간을 제공합니다. Important: 시스템은 백그라운드 알림을 낮은 우선순위로 취급합니다. 따라서 이를 사용해 앱의 콘텐츠를 새로고침할 수 있지만, 시스템이 반드시 전달을 보장하지는 않습니다. 또한 백그라운드 알림의 총 개수가 과도해지면 시스템이 그 전달을 제한할 수 있습니다. 시스템에서 허용하는 백그라운드 알림의 수는 현재 상황에 따라 달라지지만, 한 시간에 두 세개 이상 보내지 않도록 하는 것이 좋습니다. ...

October 5, 2025 · 2 min · 335 words · Me