Слабые ссылки (weak) используются для предотвращения циклических ссылок владения между объектами классов, которые могут привести к утечкам памяти.
Цикл сильного владения возникает, когда два или более объекта ссылаются друг на друга с помощью сильных ссылок. В этом случае, даже если они больше не доступны извне (например, все сильные ссылки из "корня" объектов уничтожены), они будут продолжать удерживать друг друга в памяти, так как их счетчики ссылок останутся положительными.
Слабая ссылка, в отличие от сильной, не увеличивает счетчик ссылок объекта. Когда все сильные ссылки на объект удалены, он будет деаллоцирован, и слабая ссылка станет nil. Это позволяет прервать цикл сильного владения и избежать утечки памяти.
Слабые ссылки всегда должны быть опциональными, потому что объект, на который они ссылаются, может быть деаллоцирован в любой момент.
Пример использования в Swift:
swift