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.