Junior — Middle
Kāpēc ir ieteicams izmantot vājo atsauci uz sevi (weak self) kodā ar aizvērumiem?
sobes.tech AI
Atbilde no AI
Izmantojot vājo atsauci (weak self) aizvaros ir ir nepieciešams, lai novērstu stipros atsauces ciklus (retain cycles), kas noved pie atmiņas noplūdes.
Kad aizvars ieraksta self kā vājo atsauci, un self satur šo aizvaru (piemēram, īpašībā), tie viens otru tur, un neviens objekts netiek atbrīvots.
Vājas atsauces piemērs:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Šeit self ir ierakstīts vājš, tāpēc, ja self objekts tiks iznīcināts pirms aizvara izpildes, tas to neuzturēs atmiņā, novēršot noplūdi.