Sobes.tech
Junior — Middle

Yaddaş idarəetməsi və referans modelində Strong və Weak referans tipləri arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Strong-əlaqə — obyektə normal güclü əlaqədir və bu obyektin istinad sayını (saxlama sayını) artırır. Ən azı bir güclü əlaqə mövcud olduqda, obyekt yaddaşdan silinməz.

Weak-əlaqə — zəif əlaqədir və obyektin istinad sayını artırmır. Bu, saxlama dövrlərini qarşısını almaq üçün istifadə olunur. Əgər weak-əlaqə ilə göstərilən obyekt silinərsə, zəif əlaqə avtomatik olaraq nil-ə çevrilir.

Swift-də nümunə:

class Person {
    var name: String
    init(name: String) { self.name = name }
    var apartment: Apartment?
}

class Apartment {
    let unit: String
    weak var tenant: Person?  // dövrü qarşısını almaq üçün zəif əlaqə
    init(unit: String) { self.unit = unit }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john  // zəif əlaqə

Burada, zəif əlaqə tenant obyekt Person-u tutmur, bu da yaddaş sızmalarını qarşısını alır.