Sobes.tech
Junior — Middle

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ə strongunowned 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ə, unowned istinadı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.