/* Page prose (de) */
"MainActorMainThread" = "# `@MainActor`: der Hauptthread, vom Compiler geprüft\n\nUI-State darf nur je auf dem Hauptthread angefasst werden. Der klassische Weg, diese Regel einzuhalten, war, jede Aktualisierung in `DispatchQueue.main.async` zu verpacken und zu *hoffen*, dass du es nie vergisst. `@MainActor` erledigt die Arbeit für dich: Markiere einen Typ als `@MainActor`, und jede seiner Methoden läuft **garantiert** auf dem Hauptthread, egal wer sie aufruft, und der Compiler prüft es.\n\nUm diese Garantie bei echter Arbeit zu beobachten, beginnen wir absichtlich auf einem **Hintergrundthread** mit `Task.detached` und rufen dann in ein `@MainActor`-Display hinein. Ein kleiner Helfer meldet, ob wir auf dem Hauptthread sind, denn Swift lässt dich `Thread.isMainThread` nicht *direkt* innerhalb einer async-Task lesen: Eine Task kann zwischen Threads springen, sodass ein nacktes Auslesen unzuverlässig wäre.";
"MainActorMainThreadNotice" = "Lies die Ausgabe von oben nach unten. Die erste Zeile gibt `false` aus: Wir sind wirklich auf einem Hintergrundthread. Jede `deposit`-Zeile gibt `true` aus: `@MainActor` hat diese Arbeit für uns auf den Hauptthread gezogen. Wir haben abseits vom Hauptthread begonnen, und trotzdem wurde das Display nur je auf dem Hauptthread angefasst, und wir haben kein einziges Mal `DispatchQueue.main.async` geschrieben. Das ist das ganze Versprechen von `@MainActor`.\n\nDu musstest zwar `await` vor jedem `deposit` schreiben. Darum geht es auf der nächsten Seite.\n\n* callout(Probier es aus): Ändere `Task.detached` in eine einfache `Task`. Eine einfache `Task` erbt den Kontext der Seite, der der MainActor ist, sodass nun sogar die erste Zeile `true` ausgibt: Es gab nie einen Hintergrundthread, den man verlassen könnte. `Task.detached` war das, was uns auf einen gesetzt hat.\n\n[Zurück](@previous)  |  Seite 2 von 11  |  [Weiter: Auf den MainActor wechseln](@next)";
