Junior — Middle
Xotira boshqaruvi va referens modelida Strong va Weak turdagi referensiyalar qanday farq qiladi?
sobes.tech AI
AIdan javob
Strong-aloqa — bu ob'ektga odatdagi oddiy kuchli aloqa bo'lib, bu ob'ektning murojaatlar sonini (saqlash hisobini) oshiradi. Kamida bitta kuchli aloqa mavjud bo'lsa, ob'ekt xotiradan o'chirilmaydi.
Weak-aloqa — bu zaif aloqa bo'lib, u ob'ektning murojaatlar sonini oshirmaydi. Bu, saqlash sikllarini oldini olish uchun ishlatiladi. Agar weak-aloqa bilan ko'rsatilgan ob'ekt o'chirilsa, u avtomatik ravishda nil ga aylantiriladi.
Swift misoli:
class Person {
var name: String
init(name: String) { self.name = name }
var apartment: Apartment?
}
class Apartment {
let unit: String
weak var tenant: Person? // siklni oldini olish uchun weak aloqa
init(unit: String) { self.unit = unit }
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john // weak-aloqa
Bu yerda, weak-aloqa tenant ob'ekt Personni ushlab turmaydi, bu esa xotira oqib ketishining oldini oladi.