Junior — Middle
W jakich sytuacjach używa się słabej referencji do obiektu?
sobes.tech AI
Odpowiedź od AI
Słabe odniesienie (weak reference) w iOS jest używane do zapobiegania cyklom silnych odniesień (retain cycles), które mogą prowadzić do wycieków pamięci. Nie zwiększa licznika odniesień obiektu, więc obiekt może zostać zwolniony, nawet jeśli istnieją do niego słabe odniesienia.
Typowe sytuacje użycia słabych odniesień:
- Delegaci: często deklarowani jako
weak, aby uniknąć cyklu między obiektem a jego delegatem. - Zamknięcia (closures): jeśli zamknięcie przechwytuje
self, aby uniknąć cyklu,selfjest przechwytywane za pomocą[weak self]. - Połączenia między obiektami, gdzie jeden obiekt posiada inny, a drugi powinien mieć odniesienie bez własności.
Przykład z delegatem:
protocol SomeDelegate: AnyObject {
func didUpdate()
}
class SomeClass {
weak var delegate: SomeDelegate?
}
W ten sposób słabe odniesienie pomaga zarządzać pamięcią i zapobiegać wyciekom.