Sobes.tech
Junior — Middle

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.