Junior — Middle
Millised tingimused ja piirangud on seotud nõrkade omaduste kasutamisega tarkvarasüsteemides?
sobes.tech AI
Vastus AI-lt
iOS-is kasutatakse nõrku viiteid (weak references), et vältida tugevaid viitevõlusid ja mälulekkeid, eriti ARC (Automaatne viidete arvutamine) ajal. Kuid nende kasutamisel on mõned olulised tingimused ja piirangud:
- Objekt võib vabastada igal ajal, kui sellele ei ole tugevaid viiteid. See tähendab, et nõrk omadus võib ootamatult muutuda nil-iks ning seda tuleb alati enne kasutamist kontrollida.
- Nõrgad omadused ei sobi objektide salvestamiseks, mille elutsükkel peab olema garanteeritud. Kui objekt peab kestma kauem kui tugev viide, ei hoia nõrk viide seda objekti elus.
- Kõik tüübid ei saa olla märgitud weak-ina. Näiteks Swiftis võivad nõrgad viited olla ainult klassidele (viidetüübid), mitte struktuuridele või loenditele.
- Nõrgad viited ei tööta otse sulgudes (closures). Tsüklite vältimiseks kasutatakse capture listi weak või unowned-iga.
Näide nõrga viite kasutamisest Swiftis:
class ViewController: UIViewController {
weak var delegate: SomeDelegate? // nõrk viide tsükli vältimiseks
}
// Alati tuleb kontrollida, kas delegate ei ole nil, enne meetodite kutsumist
if let delegate = delegate {
delegate.doSomething()
}