Sobes.tech
Junior — Middle

Dasturlash tilida zaif havolani qanday qilish mumkin?

sobes.tech AI

AIdan javob

iOS (Swift) da yaratish uchun zaif havolani weak kalit so'zi ishlatiladi. Zaif havola ob'ektning havola hisoblagichini oshirmaydi, bu esa ushlab qolish sikllarini va xotira oqib ketishini oldini olishga yordam beradi.

Misol:

class Person {
    var name: String
    weak var apartment: Apartment? // zaif havola

    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    var tenant: Person? // kuchli havola

    init(unit: String) {
        self.unit = unit
    }
}

// Foydalanish:
let john = Person(name: "John")
let unit4A = Apartment(unit: "4A")
john.apartment = unit4A
unit4A.tenant = john

Ushbu misolda, Person Apartment ga zaif havola bilan bog'langan, bu esa Person va Apartment o'rtasidagi ushlab qolish siklini oldini oladi. Agar ikkalasi ham kuchli bo'lsa, ob'ektlar xotiradan chiqarilmaydi.

Muhim: zaif havolalar opsional bo'lishi kerak (?), chunki ular bilan bog'langan ob'ekt o'chirilishi mumkin.