Swift Academy · Ders

Katı Eşzamanlılığa Geçiş

Swift 6 eşzamanlılık denetimini aşamalı olarak benimseyin.

4. ders / 413 adım

Katı Eşzamanlılığa Geçiş, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Katı Eşzamanlılık Nedir

Katı eşzamanlılık denetimi, olası her veri yarışını derleme zamanında derleyiciye tanılatır.

Swift 6 dil kipinde varsayılan olarak açıktır; Swift 5 kipinde kademeli olarak etkinleştirilir.

Üç Denetim Düzeyi

-strict-concurrency seçeneğinin üç düzeyi vardır: minimal (Swift 5'te varsayılan), targeted (zaten eşzamanlılık kullanan kodu denetler) ve complete (Swift 6 tarzı tam denetim).

// Build settings example
// SWIFT_STRICT_CONCURRENCY = complete

Kademeli Geçiş

Önerilen yol, düzeyleri kademeli olarak yükseltmektir: targeted ile başlayın, uyarıları düzeltin, ardından dil kipini 6'ya geçirmeden önce complete düzeyine geçin.

Bu yaklaşım, büyük kod tabanlarında geçişi yönetilebilir tutar.

// Step 1: targeted
// Step 2: complete (warnings)
// Step 3: Swift 6 mode (errors)

Modül Bazında Geçiş

Katı eşzamanlılık target başına ayarlanır. Diğerlerini hazır olana kadar Swift 5 kipinde bırakarak her seferinde bir modülü geçirebilirsiniz.

// Package.swift target
// swiftSettings: [.enableExperimentalFeature("StrictConcurrency")]

Yaygın Uyarı: Gönderilemez Değer Yakalama

En sık görülen tanı, bir Task içinde gönderilemez bir değeri yakalamak veya bu değeri bir aktör sınırı boyunca göndermektir.

Türü gönderilebilir hâle getirerek ya da yalnızca gönderilebilir verileri kopyalayarak düzeltin.

final class Model { var name = "" }
func start(_ m: Model) {
    // Warning: non-Sendable Model captured by Task
    // Task { print(m.name) }
}

Değer Türleriyle Düzeltme

Çoğu zaman en temiz çözüm, verileri otomatik olarak gönderilebilir olan değişmez bir değer türü olarak modellemektir.

struct Model: Sendable { let name: String }
func start(_ m: Model) {
    Task { print(m.name) } // safe now
}

@MainActor ile Düzeltme

Kullanıcı arayüzü türleri, arka plan görevlerinden kullanıldıkları için sık sık uyarı üretir. Türe @MainActor ek açıklaması vermek, onu ana iş parçacığına sabitler ve uyarıları çözer.

@MainActor
final class ViewModel {
    var items: [String] = []
    func reload() async {
        let fetched = await load()
        items = fetched
    }
}
func load() async -> [String] { [] }

Mevcut Türler için Gönderilebilir Uyumluluğu

Denetiminizde olan ve zaten iş parçacığı açısından güvenli türler için, uyarıları dürüstçe susturmak üzere açıkça Sendable veya @unchecked Sendable uyumluluğu ekleyin.

import Foundation
final class Counter: @unchecked Sendable {
    private let lock = NSLock()
    private var n = 0
}

Eşzamanlılık Öncesi İçe Aktarmalar

Bir bağımlılık API'sini henüz ek açıklamalarla belirtmemişse @preconcurrency import, o modülün denetimini gevşetir ve güncellenene kadar hataları uyarılara dönüştürür.

@preconcurrency import SomeLegacyFramework

Simgeleri @preconcurrency ile İşaretleme

Ayrıca tek tek bildirimleri @preconcurrency ile işaretleyebilirsiniz; böylece eski koddan gelen çağıranlar, gönderilebilirlik gereksinimleri eklediğinizde hata almaz.

@preconcurrency
func handle(_ value: Sendable) { }

Geçişi Doğrulama

complete denetimi hiç uyarı üretmediğinde, garantilerin zorunlu kılınan hatalara dönüşmesi ve gerileyememesi için target'ı Swift 6 kipine geçirin.

// Package.swift
// .target(name: "App", swiftSettings: [.swiftLanguageMode(.v6)])

Kısa Kontrol: Geçiş

Katı eşzamanlılığa geçiş konusundaki anlayışınızı sınayın.

Özet: Katı Eşzamanlılığa Geçiş

Katı eşzamanlılık denetimi, veri yarışı tespitini derleme zamanına taşır ve minimal, targeted ile complete düzeylerini sunar. Modül bazında geçiş yapın; gönderilemez yakalamaları değer türleri, @MainActor veya dürüst gönderilebilirlik uyumluluğuyla düzeltin ve geçişi yapılmamış bağımlılıklarla birlikte çalışmayı kolaylaştırmak için @preconcurrency kullanın.

complete düzeyi uyarısız hâle geldiğinde, garantileri kalıcılaştırmak için Swift 6 kipini etkinleştirin.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Swift öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
122
Dersler
409

Sıkça Sorulan Sorular

“Katı Eşzamanlılığa Geçiş” dersi ücretsiz mi?

Evet — “Katı Eşzamanlılığa Geçiş” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Katı Eşzamanlılığa Geçiş” dersinde ne öğreneceğim?

Swift 6 eşzamanlılık denetimini aşamalı olarak benimseyin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Katı Eşzamanlılığa Geçiş” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Veri Yarışı Sorunu
  2. Sendable Protokolü
  3. Actor Yalıtımı ve nonisolated
  4. Katı Eşzamanlılığa Geçiş
← Swift Academy Sayfasına Dön