0Pricing
Swift Academy · Ders

Sonlandırıcılar ve Bellek Yaşam Döngüsü

Bir nesne bellekten kaldırılmadan önce kaynakları temizlemek için deinit kullanın.

Sonlandırıcılar ve Bellek Yaşam Döngüsü, 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.

Hoş Geldiniz

Swift sınıfları, örnek serbest bırakılmadan hemen önce çalışan bir `deinit` tanımlayabilir. Nesnenin tamamını yaşam döngüsü boyunca anlamak — başlatma → kullanım → sonlandırma — kaynak yönetimi için çok önemlidir.

deinit Nedir?

```swift class FileHandle { let path: String init(path: String) { self.path = path; print("Opened \(path)") } deinit { print("Closed \(path)") } } do { let f = FileHandle(path: "/tmp/log.txt") } // deinit called here when f goes out of scope ```

deinit Sözdizimi Kuralları

• Yalnızca sınıflar — yapıların ve numaralandırmaların `deinit` özelliği yoktur • Parametre veya dönüş değeri yoktur • Parantez kullanılmaz: `deinit { }`, `deinit() { }` değil • ARC tarafından otomatik olarak çağrılır — kendiniz asla çağırmayın • Alt sınıfın `deinit` işleminden sonra üst sınıfın `deinit` işlemi otomatik olarak çağrılır

Temizleme Kullanım Alanları

`deinit` için yaygın kullanım alanları: • Ağ bağlantılarını kapatma • Bildirim gözlemcilerini kaldırma: `NotificationCenter.default.removeObserver(self)` • Zamanlayıcıları geçersiz kılma • Dosya tanıtıcılarını veya veritabanı bağlantılarını kapatma

Tutma Sayısı ve Yaşam Döngüsü

ARC, bir nesneye kaç güçlü başvurunun işaret ettiğini izler: ```swift var a: Dog? = Dog() // retain count = 1 var b = a // retain count = 2 a = nil // retain count = 1 b = nil // retain count = 0 → deinit called ```

Alt Sınıfın deinit Zinciri

```swift class Base { deinit { print("Base deinit") } } class Child: Base { deinit { print("Child deinit") } // super.deinit called automatically after } var c: Child? = Child() c = nil // prints: Child deinit, then Base deinit ```

weak Tutulmayı Önler

```swift class Owner { var pet: Dog? deinit { print("Owner gone") } } class Dog { weak var owner: Owner? // weak = no strong retain deinit { print("Dog gone") } } ``` `owner` nil olarak ayarlandığında, `Dog` bir başvuru tutsa bile `Owner` serbest bırakılabilir.

Tutma Döngüleri Sonlandırıcıyı Engeller

```swift class A { var b: B? } class B { var a: A? } var a: A? = A() var b: B? = B() a?.b = b b?.a = a a = nil b = nil // deinit never called — retain cycle! ```

Zamanlayıcıyı Geçersiz Kılma Kalıbı

```swift class PollingService { var timer: Timer? func start() { timer = Timer.scheduledTimer(...) } deinit { timer?.invalidate() timer = nil print("Timer stopped") } } ```

Instruments ile Sızıntı Tespiti

`deinit` hiç çağrılmıyorsa büyük olasılıkla bir tutma döngünüz vardır. Ayrılmış ancak hiçbir zaman serbest bırakılmamış nesneleri tespit etmek için Xcode Instruments → Leaks şablonunu kullanın.

Hızlı Kontrol

Bir `deinit` işlemini hangi türler tanımlayabilir?

Özet

Temel noktalar: • `deinit { }` — serbest bırakmadan önce kaynakları temizler • Yalnızca sınıflar; alt sınıftan sonra üst sınıfın deinit işlemi otomatik olarak çağrılır • ARC, deinit işleminin ne zaman çalışacağını belirler (tutma sayısı 0'a düşer) • Tutma döngüleri deinit işlemini engeller — `weak`/`unowned` ile döngüyü kırın • Deinit işlemi hiç çalışmayan nesneleri bulmak için Instruments Leaks'i kullanın Kurs tamamlandı! Sırada: enum kalıpları ve durum makineleri.

Sıkça Sorulan Sorular

“Sonlandırıcılar ve Bellek Yaşam Döngüsü” dersi ücretsiz mi?

Evet — “Sonlandırıcılar ve Bellek Yaşam Döngüsü” 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.

“Sonlandırıcılar ve Bellek Yaşam Döngüsü” dersinde ne öğreneceğim?

Bir nesne bellekten kaldırılmadan önce kaynakları temizlemek için deinit kullanın. 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.

“Sonlandırıcılar ve Bellek Yaşam Döngüsü” 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. Sınıf Kalıtımı ve super Anahtar Sözcüğü
  2. override, final ve Alt Sınıf Oluşturmayı Engelleme
  3. Tür Dönüştürme: is, as?, as! ve as
  4. Sonlandırıcılar ve Bellek Yaşam Döngüsü
← Swift Academy Sayfasına Dön