Sobes.tech
Junior — Middle

Proqramlaşdırmada Unowned növünün istifadəsinin üstünlükləri və çatışmazlıqları nələrdir?

sobes.tech Süni İntellekt

AI-dan cavab

Swift-də unowned tipi, referans sayğacını artırmayan zəif bir istinad yaratmaq üçün istifadə olunur, lakin ona istinad edən obyektin istifadə zamanı həmişə mövcud olacağı qəbul edilir.

Üstünlüklər:

  • Güclü istinad döngələrini qarşısını alır, yaddaş sızmalarını önləyir.
  • Seçimli deyil, ona görə də açma (unwrap) tələb etmir.

Eksikliklər:

  • Əgər unowned istinad etdiyi obyekt sərbəst buraxılırsa, bu istinada giriş tətbiqin çökməsinə (runtime error) səbəb olar.
  • İstinad etdiyi obyektin həyat dövrünün, istinadın həyat dövründən uzun və ya ona bərabər olacağına güvən tələb edir.

İstifadə nümunəsi:

class Owner {
    var pet: Pet?
}

class Pet {
    unowned let owner: Owner
    init(owner: Owner) {
        self.owner = owner
    }
}

let owner = Owner()
owner.pet = Pet(owner: owner)

Burada, Pet, güclü istinad döngələrini qarşısını almaq üçün Owner-a unowned istinad saxlayır.