Unowned istifadəsi proqramlaşdırmada obyektin həyat dövrünün idarə olunmasına necə təsir edir?
sobes.tech Süni İntellekt
AI-dan cavab
iOS (Swift) daxilində, unowned açar sözü obyektə zəif istinad elan etmək üçün istifadə olunur, bu, istinad sayğacını artırmır, lakin obyektin istinadın ömrü boyunca mövcud olacağını fərz edir.
unowned istifadə etmək, yaddaş sızmalarına səbəb ola biləcək döngələri (retain cycles) qarşısını almağa kömək edir. weak-dən fərqli olaraq, unowned istinad seçimi deyil və obyekt sərbəst buraxıldıqdan sonra nil olmur, ona görə də yalnız obyektin daha uzun müddət mövcud olacağına zəmanət verildiyi hallarda istifadə edilməlidir.
Nümunə:
class Person {
var name: String
init(name: String) { self.name = name }
var apartment: Apartment?
}
class Apartment {
let unit: String
unowned let tenant: Person
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A", tenant: john)
john.apartment = apt
Burada, Apartment Person-a unowned istinad saxlayır, bu da döngünü qarşısını alır və Person-in həmişə mövcud olacağı qəbul edilir, Apartment mövcud olduqca. Əgər Person əvvəlcədən silinərsə, unowned istinada giriş vaxtında səhv baş verəcək.