0Pricing
Swift Academy · 강의

액터: 공유 변경 가능 상태 보호

actor로 접근을 직렬화하고 컴파일 시 데이터 경쟁을 방지합니다.

액터: 공유 변경 가능 상태 보호은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

Swift의 액터는 *액터 격리*를 사용하여 공유 가변 상태를 동시 접근으로부터 보호합니다. 수동 잠금 없이 안전한 동시성을 제공합니다.

액터 정의하기

```swift actor Counter { var count = 0 func increment() { count += 1 } func value() -> Int { count } } ```

액터 상태에 접근하기

```swift let counter = Counter() await counter.increment() // await required for external access let v = await counter.value() ``` 액터를 가로지르는 모든 호출은 비동기입니다. 호출은 해당 액터의 차례를 기다립니다.

데이터 격리

```swift actor BankAccount { private var balance: Double = 0 func deposit(_ amount: Double) { balance += amount } func withdraw(_ amount: Double) throws { guard amount <= balance else { throw BankError.insufficient } balance -= amount } } ```

nonisolated

```swift actor Config { nonisolated let appName: String = "CoddyKit" // safe to access without await var settings: [String:String] = [:] } let name = Config().appName // no await needed ```

@MainActor

```swift @MainActor class ViewController { var label = UILabel() func updateText(_ text: String) { label.text = text // guaranteed on main thread } } ``` `@MainActor`는 메인 스레드에서 실행되는 특수한 액터입니다.

Sendable 요구 사항

액터 경계를 넘어 전달되는 타입은 `Sendable`을 준수해야 합니다: ```swift struct Message: Sendable { var text: String; var timestamp: Date } await actor.receive(message) // safe — Message is Sendable ```

액터와 클래스 비교

| 기능 | 액터 | 클래스 | |---|---|---| | 동시성 안전 | ✓ | ✗ | | 참조 타입 | ✓ | ✓ | | 상속 | ✗ | ✓ | | 비동기 접근 | ✓ | — |

액터에서는 교착 상태가 발생하지 않습니다

잠금과 달리 액터에서는 교착 상태가 발생하지 않습니다. 하지만 액터가 다른 액터를 기다리는 동안 두 번째 호출이 도착하면 *액터 재진입*이 발생할 수 있습니다.

전역 액터

```swift @globalActor struct DatabaseActor { static let shared = Actor() actor Actor {} } @DatabaseActor func save() { ... } ```

빠른 확인

액터 프로퍼티에 외부에서 접근할 때 `await`를 사용해야 하는 이유는 무엇인가요?

복습

핵심 내용: • 액터는 가변 상태를 보호하며, 한 번에 하나의 작업만 실행합니다 • 외부에서 접근하려면 `await`가 필요합니다 • 격리되지 않은 안전한 멤버에는 `nonisolated`를 사용합니다 • `@MainActor` — 메인 스레드에서 실행되며 UI에 사용합니다 • 액터 경계를 넘는 타입은 `Sendable`이어야 합니다 강좌를 완료했습니다! 다음: 고급 제네릭

자주 묻는 질문

“액터: 공유 변경 가능 상태 보호” 강의는 무료인가요?

네 — “액터: 공유 변경 가능 상태 보호” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“액터: 공유 변경 가능 상태 보호”에서 뭘 배우나요?

actor로 접근을 직렬화하고 컴파일 시 데이터 경쟁을 방지합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“액터: 공유 변경 가능 상태 보호” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. async/await 구문과 비동기 함수 호출
  2. Task와 Task 취소
  3. async let과 동시 자식 작업
  4. 액터: 공유 변경 가능 상태 보호
← Swift Academy(으)로 돌아가기