Swift-də istinadların elanında 'unowned' və 'strong' açar sözlərinin istifadəsi arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də strong və unowned açar sözləri, istinadları idarə etmək və saxlama dövrlərini (retain cycles) qarşısını almaq üçün istifadə olunur.
-
strong — bu, standart güclü istinad olub, obyektin istinadçı sayğacını artırır. Əgər ən azı bir güclü istinad mövcuddursa, obyekt yaddaşdan silinməz.
-
unowned — bu, zəif, lakin qeyri-optional istinaddır. O, istinadçı sayğacını artırmır, lakin bu istinadda istinad edilən obyektin hər zaman mövcud olduğunu fərz edir. Əgər obyekt artıq silinibsə,
unownedistinadına giriş icra zamanı xəta ilə nəticələnər.
Nümunə:
class Person {
var apartment: Apartment?
}
class Apartment {
unowned let tenant: Person
init(tenant: Person) {
self.tenant = tenant
}
}
let john = Person()
let apt = Apartment(tenant: john)
john.apartment = apt
Burada, tenant unowned kimi elan olunub, çünki mənzil şəxsi güclü istinadla tutmamalıdır ki, döngü qarşısını alsın, lakin şəxsin mənzildən daha uzun müddət mövcud olacağı fərz edilir.