0Pricing
Swift Academy · Ders

Değiştirme, Paylaşım ve Beklenmedik Takma Adlandırma

Paylaşılan başvuruların hatalara nasıl yol açtığını ve değer türlerinin bunları nasıl önlediğini öğrenin.

Değiştirme, Paylaşım ve Beklenmedik Takma Adlandırma, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. 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.

Hoş Geldiniz

Takma ad paylaşımı, iki değişken aynı nesneye başvurduğunda oluşur. Değer türlerinde bu mümkün değildir; başvuru türlerinde ise şaşırtıcı hatalara yol açabilir. Bu ayrımı anlamak çok önemlidir.

Değer Türlerinde Takma Ad Paylaşımı Yoktur

```swift var a = [1,2,3] var b = a // independent copy a.append(4) print(b) // [1,2,3] — unchanged ``` Bir değer türünün her atamasında bağımsız bir kopya oluşturulur.

Başvuru Türleri DO ile Takma Ad Paylaşır

```swift class Counter { var value = 0 } let a = Counter() let b = a // SAME object a.value += 1 print(b.value) // 1 — b sees the change! ``` Hem `a` hem de `b` aynı öbek nesnesini gösterir.

İşlev Parametrelerinde Takma Ad Paylaşımı

```swift func increment(_ c: Counter) { c.value += 1 } let shared = Counter() increment(shared) print(shared.value) // 1 — mutated by the function ``` Sınıflar başvuru yoluyla aktarılır; işlev özgün nesneyi değiştirir.

Sorun: Paylaşılan Değiştirilebilir Durum

```swift class Cache { var items: [String] = [] } var cache = Cache() var cache2 = cache // aliased! cache.items.append("data") print(cache2.items) // ["data"] — unexpected! ``` Görünüşte ilgisiz kod bölümlerinin birbirini etkilemesinin nedeni budur.

Değer Türleriyle Çözüm

```swift struct Cache { var items: [String] = [] } var cache = Cache() var cache2 = cache // independent copy cache.items.append("data") print(cache2.items) // [] — unaffected ```

Kopyalayan Sınıflarla Çözüm

```swift func process(_ c: Counter) { var local = Counter() local.value = c.value // copy values, not reference local.value += 1 } ``` Başvuru semantiğine ihtiyaç duyduğunuzda ancak takma ad paylaşımı istemediğinizde değerleri açıkça kopyalayın.

İş Parçacığı Güvenliği ve Takma Ad Paylaşımı

Takma adlandırma, iş parçacıkları arasında özellikle tehlikeli hâle gelir: ```swift // Thread 1: cache.items.append("a") // Thread 2 simultaneously: cache.items.append("b") // ❌ data race! ``` Swift Eşzamanlılığı'ndaki değer türleri bunu varsayılan olarak önler — değiştirilebilir durumu yalnızca aktörler paylaşabilir.

Yanlışlıkla Oluşan Takma Adlandırmayı Algılama

Xcode'un İş Parçacığı Temizleyicisi (TSan), veri yarışlarını çalışma zamanında algılar. Bunu Şema > Tanılamalar > İş Parçacığı Temizleyicisi altında etkinleştirin. Swift'in münhasır erişim denetimi, `inout` parametreleri için tek iş parçacıklı takma adlandırma ihlallerini çalışma zamanında yakalar.

İstemli Takma Adlandırma Örüntüleri

Bazen takma adlandırma isteyerek yapılır — örneğin genel bir önbellek: ```swift class AppCache { static let shared = AppCache() // intentional shared reference var data: [String: Any] = [:] } ``` İstemli paylaşımı açıkça belgeleyin; varsayılan olarak değer türlerini kullanarak yanlışlıkla oluşan takma adlandırmadan kaçının.

Hızlı Kontrol

Bir sınıf örneğini yeni bir değişkene atadığınızda ne olur?

Özet

Temel çıkarımlar: • Değer türleri (yapılar) — atama kopyalar; takma adlandırma mümkün değildir • Referans türleri (sınıflar) — atama referansı paylaşır; takma adlandırma mümkündür • İş parçacıkları arasındaki takma adlandırma = veri yarışı • Varsayılan olarak yapılara öncelik verin; yalnızca paylaşılan kimlik gerektiğinde sınıfları kullanın • Sorunları algılamak için TSan ve Swift'in münhasır erişim denetimini kullanın Sırada: karma değer/referans grafikleri.

Sıkça Sorulan Sorular

“Değiştirme, Paylaşım ve Beklenmedik Takma Adlandırma” dersi ücretsiz mi?

Evet — “Değiştirme, Paylaşım ve Beklenmedik Takma Adlandırma” 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.

“Değiştirme, Paylaşım ve Beklenmedik Takma Adlandırma” dersinde ne öğreneceğim?

Paylaşılan başvuruların hatalara nasıl yol açtığını ve değer türlerinin bunları nasıl önlediğini öğrenin. 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 2. dersidir.

“Değiştirme, Paylaşım ve Beklenmedik Takma Adlandırma” 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. Yığın ve Öbek: Değerler Nerede Yaşar
  2. Değiştirme, Paylaşım ve Beklenmedik Takma Adlandırma
  3. Karma Değer/Başvuru Grafikleri
  4. Değer Anlambilimi için API Tasarlama
← Swift Academy Sayfasına Dön