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.