Sobes.tech
Middle+

What is an actor?

sobes.tech AI

Answer from AI

An Actor in Swift is a type that isolates its state, preventing concurrent access from multiple threads and thus eliminating data races.

Main features:

  • State isolation: All properties of an actor are accessible only from within its methods or from other actors with appropriate access modifiers.
  • Asynchronous interaction: Calls to actor methods from outside are always asynchronous and require await. This guarantees atomic access to the actor's state.
  • No inheritance: Actors do not support inheritance.
  • nonisolated properties: Properties can be marked as nonisolated if they are constants (let) and have thread-safe types. This allows access without await.

Example:

actor Counter {
    private var value = 0

    func increment() {
        value += 1
    }

    func getValue() -> Int {
        return value
    }
}

Usage:

// Asynchronous call is required due to isolation
let myCounter = Counter()
await myCounter.increment()
let currentValue = await myCounter.getValue()

Actors are a key component of the new concurrency model in Swift, providing a safe and structured way to manage shared mutable state in multithreaded applications.

What is an actor? — iOS - sobes.tech