Описание тега weak-references

Слабая ссылка - это ссылка, которая не претендует на право собственности. Слабая ссылка сохраняет ссылку на рассматриваемый объект, пока он находится в памяти, но не мешает системе управления памятью освободить связанную память, когда объект, на который указывает ссылка, больше не нужен. Многие языки имеют или поддерживают различные уровни слабых ссылок, такие как Swift, Objective-C, Java, C#, Python, Perl и Lisp.

Слабая ссылка - это ссылка, которая не заставляет систему управления памятью удерживать ссылочный объект. Он используется в тех случаях, когда требуется ссылка на рассматриваемый объект, если он все еще нужен / используется в другом месте, но также не препятствует его восстановлению системой управления памятью в ходе ее обычного жизненного цикла.

Слабые ссылки особенно важны в тех случаях, когда два или более объекта могут ссылаться друг на друга, и вы хотите избежать "цикла сохранения" или "цикла сильных ссылок", когда циклические комбинации сильных ссылок не позволят восстановить память. Одно из распространенных способов использования слабых ссылок в сочетании с замыканиями и обратными вызовами.

Некоторые языки со сборкой мусора имеют или поддерживают различные уровни слабых ссылок, например java, C#, python, perl и lisp.

Языки подсчета ссылок, такие как objective-c и swift, используютweak (а также unowned) ссылки для предотвращения создания дополнительных strongСсылки. Объект, который больше не имеетstrong ссылки будут удалены.

В некоторых средах есть дополнительные варианты слабых ссылок, таких как "мягкий", "без владельца", "фантом", которые имеют очень специфические значения в этих средах.