Sobes.tech
Junior — Middle

Bir fonksiyona argüman olarak geçirilen kapanışlar için kaçış mekanizması kullanmak gerekiyor mu?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'te, varsayılan olarak kapanışlar non-escaping'tir, yani iletildiği fonksiyon tamamlandıktan sonra saklanamaz ve çağrılamazlar.

Eğer kapanışı saklamak ve daha sonra çağırmak gerekiyorsa (örneğin, asenkron bir çağrıda, geri aramada), onu @escaping olarak işaretlemeniz gerekir.

Örnek:

func performAsyncTask(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // bazı işler
        completion() // kapanışı daha sonra çağır
    }
}

Eğer kapanış sadece fonksiyon içinde kullanılıyor ve saklanmıyorsa, @escaping gerekmez.

Bu nedenle, escaping mekanizması yalnızca kapanışın, ona iletildiği fonksiyondan çıktıktan sonra çağrılabileceği durumlarda kullanılmalıdır.