Swift Academy · leksjon

Actors: beskyttelse av delt, muterbar tilstand

Bruk actor til å serialisere tilgang og forhindre datakappløp ved kompilering.

Leksjon 4 av 412 trinn

Actors: beskyttelse av delt, muterbar tilstand er en gratis leksjon i Swift Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Swift Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Swift Academy inneholder totalt 4 leksjoner.

Velkommen

Swift-actorer beskytter delt, muterbar tilstand mot samtidig tilgang ved hjelp av *actor-isolasjon*. De gir trygg samtidighet uten manuelle låser.

Definere en actor

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

Få tilgang til tilstand i en actor

```swift let counter = Counter() await counter.increment() // await required for external access let v = await counter.value() ``` Alle kall mellom actorer er asynkrone — de venter på at actoren får utføre.

Dataisolasjon

```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` er en spesiell actor som kjører på hovedtråden.

Krav om Sendable

Typer som sendes mellom actor-grenser, må oppfylle `Sendable`-kravet: ```swift struct Message: Sendable { var text: String; var timestamp: Date } await actor.receive(message) // safe — Message is Sendable ```

Actor vs klasse

| Funksjon | Actor | Klasse | |---|---|---| | Trygg ved samtidighet | ✓ | ✗ | | Referansetype | ✓ | ✓ | | Arv | ✗ | ✓ | | Asynkron tilgang | ✓ | — |

Actorer kan ikke havne i deadlock

I motsetning til låser kan actorer ikke havne i deadlock — men de kan føre til *reentrans i actorer* når en actor venter på en annen actor og et nytt kall kommer inn i mellomtiden.

Globale actorer

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

Hurtigsjekk

Hvorfor må ekstern tilgang til egenskaper i en actor bruke `await`?

Oppsummering

Viktige punkter: • Actorer beskytter muterbar tilstand — én oppgave kjører om gangen • Ekstern tilgang krever `await` • `nonisolated` brukes for trygge, ikke-isolerte medlemmer • `@MainActor` — kjører på hovedtråden; bruk den til UI • Typer som krysser actor-grenser, må være `Sendable` Kurset er fullført! Neste: Avanserte generiske typer.
Gratis å komme i gang

Lær deg Swift med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
122
Leksjoner
409

Ofte stilte spørsmål

Er leksjonen «Actors: beskyttelse av delt, muterbar tilstand» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Swift Academy, inkludert «Actors: beskyttelse av delt, muterbar tilstand», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Swift Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Actors: beskyttelse av delt, muterbar tilstand»?

Bruk actor til å serialisere tilgang og forhindre datakappløp ved kompilering. Du øver på Swift Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Swift Academy?

Ingen tidligere erfaring er nødvendig. Swift Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Actors: beskyttelse av delt, muterbar tilstand»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Swift Academy-leksjonen?

Ja. Alle Swift Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. async/await-syntaks og kall til async-funksjoner
  2. Task og kansellering av Task
  3. async let og samtidige child tasks
  4. Actors: beskyttelse av delt, muterbar tilstand
← Tilbake til Swift Academy