Sobes.tech
Junior — Middle

Proqramlaşdırma dilində @Escaping qeydləri ilə standart funksiyalar arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Swift (iOS dili) içində @escaping qeydi, bağlama (closure) funksiyasından çıxışdan sonra da çağırıla biləcəyini göstərmək üçün istifadə olunur.

Əsasən, Swift-də bağlamalar qeyri-çıxış (non-escaping) hesab olunur, yəni onlar funksiyanın içində çağırılmalıdır. Əgər bağlama saxlanılırsa, məsələn, bir xüsusiyyətdə və ya daha sonra asinxron şəkildə çağırılırsa, onu @escaping ilə işarələmək lazımdır.

Bu, yaddaş idarəçiliyi və sızmaların qarşısını almaq üçün vacibdir, çünki @escaping bağlamalar self-i ələ keçirə bilər və self.-in açıq istifadəsini tələb edir.

Nümunə:

func performAsyncTask(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // Asinxron iş
        completion() // funksiyadan çıxışdan sonra çağırış
    }
}

Beləliklə, @escaping standart (non-escaping) bağlamalardan fərqlidir, çünki bağlamanın funksiyanın icrasından daha uzun yaşamasına və sonra çağırılmasına imkan verir.