Sobes.tech
Junior — Middle

Bir programlama dilinde @Escaping açıklamasının standart fonksiyonlardan farkı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift (iOS dili) içinde @escaping notasyonu, bir kapanışın (closure) çağrılmasının, ona iletildiği fonksiyondan çıktıktan sonra da yapılabileceğini belirtmek için kullanılır.

Varsayılan olarak, Swift'teki kapanışlar non-escaping olarak kabul edilir; yani, fonksiyonun gövdesi içinde çağrılmaları gerekir. Eğer kapanış saklanıyorsa, örneğin bir özellikte tutuluyor veya daha sonra asenkron olarak çağrılıyorsa, @escaping ile işaretlenmelidir.

Bu, bellek yönetimi ve sızıntıların önlenmesi için önemlidir, çünkü @escaping kapanışlar self'i yakalayabilir ve self. kullanımını açıkça gerektirir.

Örnek:

func performAsyncTask(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // Asenkron çalışma
        completion() // fonksiyondan çıktıktan sonra çağrı
    }
}

Bu şekilde, @escaping standart (non-escaping) kapanışlardan farklıdır; çünkü kapanışın fonksiyonun çalışma süresinden daha uzun yaşayabilmesine ve daha sonra çağrılabilmesine izin verir.