Sobes.tech
Junior — Middle

Swift'te bir kapanışta weak self kullanmanın gerektiği durumlara örnek verebilir misin? Döngüsel referansları önlemek için.

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'te döngüsel referans, bir nesnenin kendisini bir kapanışta yakalaması ve bu kapanışın aynı nesnede saklanması durumunda oluşur, bu da birbirlerini tutmaya ve bellek sızıntısına yol açar. Bunu önlemek için weak self kullanılır.

Örnek: Bir ViewController sınıfınız var ve bu sınıf, bir kapanışla asenkron bir işlem başlatıyor. Kapanışta doğrudan self kullanılırsa, ViewController kapanış tarafından tutulur ve kapandıktan sonra serbest bırakılmaz.

class ViewController: UIViewController {
    func fetchData() {
        networkRequest { [weak self] data in
            guard let self = self else { return }
            self.updateUI(with: data)
        }
    }

    func updateUI(with data: Data) {
        // UI güncellemesi
    }
}

Burada, weak self güçlü döngüsel referansı engeller, çünkü kapanış self'i zayıf şekilde yakalar ve nesneyi tutmaz, böylece serbest bırakılmasına izin verir.