Sobes.tech
Junior — Middle

Yaddaş idarəetməsi kontekstində 'Unowned' termini ilə nə nəzərdə tutulur, izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

iOS (və Swift) yaddaş idarəetmə kontekstində, "Unowned" termini obyektə zəif istinad deməkdir və bu istinad referens sayını (retain count) artırmır, amma bu istinad istifadə edilərkən obyektin mövcud olduğunu fərz edir.

weak ilə fərqləri:

  • weak istinadlar obyekt silindiyi zaman nil ola bilər və buna görə də seçimli kimi elan edilir.
  • unowned istinad seçimli deyil və avtomatik olaraq nil-ə çevrilmir. Əgər unowned ilə istinad edilən obyekt silinərsə, ona giriş cəhdi icra zamanı xəta (crash) ilə nəticələnər.

İstifadə olunur, obyektin həyat müddətinin, istinadın həyat müddətindən uzun və ya bərabər olacağı təmin olunduqda.

Nümunə:

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 Owner-a unowned istinad saxlayır və Owner-ın Pet-dən daha uzun yaşadığı fərz edilir.