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.