Junior
Swift'da weak xotira modifikatori nima?
sobes.tech AI
AIdan javob
weak o'zgaruvchisi obyektlar o'rtasidagi kuchli referenslar tsiklini buzish uchun ishlatiladi, bir obyekt boshqa obyektga kuchli referensga ega bo'lsa va bu obyekt o'z navbatida qaytib kuchli referensga ega bo'lsa.
weak ning asosiy xususiyatlari:
- Referenslar hisoblagichini oshirmaydi:
weakfoydalanish obyektga kuchli referenslar sonini oshirmaydi. nilbo'lishi mumkin: Zaif referens (Optional) bo'lib, u avtomatik ravishdanilga aylantiriladi, obyekt deinitializatsiya qilinayotganda.- Ota/bolalar uchun ishlatiladi: Ko'pincha, bolalar obyektining otaiga bo'lgan referensi kuchli referenslar tsiklini oldini olish uchun ishlatiladi.
varsifatida e'lon qilinishi kerak: Zaif referensnilbo'lishi mumkinligi uchun, u o'zgaruvchi (var) bo'lishi kerak,letemas.
Foydalanish misoli:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
print("\(name) boshlanmoqda")
}
deinit {
print("\(name) tugatilmoqda")
}
}
class Apartment {
let unit: String
weak var tenant: Person? // Zaif referens
init(unit: String) {
self.unit = unit
print("Xonadon \(unit) boshlanmoqda")
}
deinit {
print("Xonadon \(unit) tugatilmoqda")
}
}
Apartment sinfida weak var tenant: Person? bo'lmasdan, kuchli referenslar tsikli yuzaga keladi va Person va Apartment instansiyalari, agar ularga boshqa kuchli referenslar qolmasa, deinitializatsiya qilinmaydi. weak yordamida, Person instansiyasi deinitializatsiya qilinayotganda, Apartment ichidagi tenant referensi avtomatik ravishda nil bo'ladi.