Ответ 1
Следующий ответ для случая, когда сбор мусора (например, на iOS) отсутствует.
В случае сбора мусора на самом деле есть ключевое слово (__weak
), чтобы создать слабую ссылку.
"Слабая" ссылка - это ссылка, которую вы не сохраняете.
Вам нужно использовать эти слабые ссылки для разрыва циклов. Обычным случаем является дочерний объект, которому требуется ссылка на его родительский объект. В этом случае родитель сохранит ссылку на дочерний объект, а дочерний объект имеет ссылку на своего родителя, но не сохраняет его. Это работает, потому что дочерний объект должен существовать только до тех пор, пока выполняется родительский объект.
Значит ли слабая ссылка ссылка, сделанная с помощью автореализованного сообщения?
Не совсем, это будет "очень слабая ссылка"; -)
Авто-выпущенный материал исчезает, когда стек вызовов разматывается (например, в конце каждого цикла событий). Если вам нужно что-то менее временное, вам нужно сохранить ссылку (или, как в приведенном выше случае, убедитесь, что какая-то другая часть сохраняет ее достаточно).