struct와 class는 언제 나누어 쓰나요?
기본값은 값 의미가 자연스러운 struct입니다. 동일한 정체성·수명·공유 변경이 필요할 때만 class를 고르고, UI 상태처럼 여러 작업이 동시에 바꾸는 데이터는 actor 또는 MainActor 경계를 함께 설명합니다.
PRACTICAL LANGUAGE GUIDE
Swift의 iOS·macOS 제품 개발, 동시성, 시스템 프레임워크 활용법과 면접 준비를 정리한 실무 가이드입니다.
SwiftUI로 화면 상태를 선언적으로 다루고, async/await로 네트워크와 파일 작업을 명시적으로 분리하세요. 앱의 핵심 도메인은 UI 프레임워크에서 떼어 내고, actor에는 공유 변경 상태만 넣는 편이 테스트와 성능 추적에 유리합니다.
iPhone·iPad·Mac 사용자 경험이 핵심이고 카메라, 건강, 결제, 오프라인 같은 Apple 프레임워크를 제품 차별점으로 쓸 때 선택하세요. 웹과 Android를 한 팀에서 같은 코드로 빠르게 실험해야 한다면 Flutter/Dart 또는 웹 기술도 함께 비교하세요.
actor DownloadStore {
private var cache: [URL: Data] = [:]
func data(for url: URL) async throws -> Data {
if let cached = cache[url] { return cached }
let (data, _) = try await URLSession.shared.data(from: url)
cache[url] = data
return data
}
}공유 캐시를 actor로 감싸면 동시 접근의 규칙을 코드 구조로 드러낼 수 있습니다.
INTERVIEW PREP
기본값은 값 의미가 자연스러운 struct입니다. 동일한 정체성·수명·공유 변경이 필요할 때만 class를 고르고, UI 상태처럼 여러 작업이 동시에 바꾸는 데이터는 actor 또는 MainActor 경계를 함께 설명합니다.
UI는 일반적으로 메인 실행 맥락에서 변경해야 합니다. 네트워크·파싱은 분리해 수행하고, 화면 상태를 반영하는 지점만 MainActor로 보내면 응답성과 데이터 경계를 함께 관리할 수 있습니다.
NEXT STEP