Sobes.tech
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.