Junior — Middle
Millistes olukordades on eelistatav kasutada nõrka viidet (weak var) Swiftis?
sobes.tech AI
Vastus AI-lt
Swiftis kasutatakse nõrku viiteid (weak var), et vältida tugevaid viitevõrke (retain cycles), mis põhjustavad mälu lekked. Soovitatav on kasutada nõrku viiteid järgmistes olukordades:
- Kui objekt A viitab objektile B, ja objekt B viitab tagasi objektile A, ning üks neist viidetest peaks olema nõrk, et vältida tsüklit.
- Delegaatides (delegates), kus delegaat tavaliselt deklareeritakse kui weak, et mitte hoida delegaadi objekti mälus.
Näide:
class ViewController: UIViewController {
var timer: Timer?
func startTimer() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
self?.updateUI()
}
}
func updateUI() {
// kasutajaliidese uuendamine
}
}
Siin on self haaratud nõrga viitena, et vältida tsüklit ajamõõtja ja kontrollija vahel.