Katı Eşzamanlılığa Geçiş
Swift 6 eşzamanlılık denetimini aşamalı olarak benimseyin.
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 = completeKademeli 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 SomeLegacyFrameworkSimgeleri @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.
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
- Veri Yarışı Sorunu
- Sendable Protokolü
- Actor Yalıtımı ve nonisolated
- Katı Eşzamanlılığa Geçiş