Junior — Middle
Swiftda zaif havola (weak var) ni qachon ishlatish ma'qul?
sobes.tech AI
AIdan javob
Swift'ta zaif referanslar (weak var), kuchli referans aylanishlarini (retain cycles) oldini olish uchun ishlatiladi; bu aylanishlar xotira oqishlariga olib keladi. Quyidagi vaziyatlarda zaif referanslardan foydalanish tavsiya etiladi:
- Ob'ekt A, ob'ekt B ga murojaat qilsa va ob'ekt B ham ob'ekt A ga murojaat qilsa, va bu murojaatlar orasidan biri zaif bo'lishi kerak bo'lsa, aylanishni oldini olish uchun.
- Delegatlar (delegates)da, bu yerda delegat odatda weak sifatida e'lon qilinadi, shuning uchun delegat ob'ekti xotirada ushlab qolinmaydi.
Misol:
class ViewController: UIViewController {
var timer: Timer?
func startTimer() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
self?.updateUI()
}
}
func updateUI() {
// interfeysni yangilash
}
}
Bu yerda, self zaif referensiya sifatida ushlanadi, shuning uchun timer va controller o'rtasidagi retain aylanishi oldiriladi.