0Pricing
Swift Academy · Ders

Karma Değer/Başvuru Grafikleri

Sınıflar içeren yapıların gizli başvuru anlambilimini ve bununla nasıl başa çıkacağınızı öğrenin.

Karma Değer/Başvuru Grafikleri, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. 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

Yapılar, depolanan özellikler olarak sınıflar içerebilir. Böyle olduklarında yapı dışarıdan bir değer türü gibi davranır, ancak içeride sınıf referansını paylaşır — bu da incelikli bir tuzaktır.

Sınıf İçeren Yapı

```swift class Storage { var data: [Int] = [] } struct Container { var storage = Storage() var label: String = "" } var a = Container() var b = a // copies label, but SHARES storage! a.storage.data.append(1) print(b.storage.data) // [1] — shared! ```

Yalnızca Değer Özellikleri Kopyalanır

Bir yapı kopyalandığında: • Değer türü özellikler (`label: String`) tamamen kopyalanır • Referans türü özelliklerde (`storage: Storage`) yalnızca işaretçi kopyalanır Buna *sığ kopya* adı verilir.

Derin Kopya Oluşturma

```swift struct Container { var storage: Storage func deepCopy() -> Container { let newStorage = Storage() newStorage.data = storage.data // copy values return Container(storage: newStorage, label: label) } } ```

COW İmdada Yetişiyor

Swift'in kendi koleksiyonları bunu COW kullanarak önler: ```swift struct SafeContainer { private(set) var storage = Storage() mutating func append(_ n: Int) { if !isKnownUniquelyReferenced(&storage) { storage = storage.copy() // copy before mutating } storage.data.append(n) } } ```

Yapı İçeren Sınıflar

```swift class ViewModel { var point = CGPoint(x: 0, y: 0) // value type inside reference type } let vm1 = ViewModel() let vm2 = vm1 // same ViewModel! vm1.point.x = 5 print(vm2.point.x) // 5 — shared because ViewModel is a class ```

Kimlik ve Eşitlik

```swift class Dog { var name: String = "" } let x = Dog() let y = x print(x === y) // true — same object print(x !== y) // false let z = Dog() print(x === z) // false — different objects ```

Sınıf Yoluyla Özyinelemeli Yapı

Yapılar kendilerine başvuramaz, ancak yapıya başvuran bir sınıf içerebilir: ```swift struct Tree { var value: Int var children: [Tree] // OK — Array uses class internally } ```

Beklenmeyen Paylaşımı Algılama

Paylaşımı çalışma zamanında algılamak için `isKnownUniquelyReferenced` kullanın: ```swift var s = Storage() var r: AnyObject = s print(isKnownUniquelyReferenced(&s)) // true var s2 = s print(isKnownUniquelyReferenced(&s)) // false — shared ```

Tasarım Yönergeleri

Bir yapının değiştirilebilir referans türü durumu taşıması gerektiğinde: 1. Değer semantiğini geri kazandırmak için COW uygulayın 2. Ya da değişmez bir sınıf kullanın: sınıf özelliği için `let` yerine `var` 3. Ya da tasarımı yeniden düşünün — belki de yapı bir sınıf olmalıdır Paylaşımın istemli olduğu durumları açıkça belgeleyin.

Hızlı Kontrol

Bir sınıf özelliği içeren yapıyı kopyaladığınızda sınıfa ne olur?

Özet

Temel çıkarımlar: • Yapı kopyası sığdır — sınıf referansları paylaşılır • `isKnownUniquelyReferenced`, paylaşımı çalışma zamanında algılar • Gerçek değer semantiğini geri kazandırmak için COW uygulayın • `===` / `!==`, sınıflar için nesne kimliğini sınar • Özyinelemeli yapılar, alt öğeler olarak Array'i (sınıf tabanlı) kullanır Sırada: değer semantiği için API tasarlama.

Sıkça Sorulan Sorular

“Karma Değer/Başvuru Grafikleri” dersi ücretsiz mi?

Evet — “Karma Değer/Başvuru Grafikleri” 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.

“Karma Değer/Başvuru Grafikleri” dersinde ne öğreneceğim?

Sınıflar içeren yapıların gizli başvuru anlambilimini ve bununla nasıl başa çıkacağınızı öğ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 3. dersidir.

“Karma Değer/Başvuru Grafikleri” 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