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:
weakistinadlar obyekt silindiyi zamannilola bilər və buna görə də seçimli kimi elan edilir.unownedistinad seçimli deyil və avtomatik olaraqnil-ə çevrilmir. Əgərunownedilə 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.