Коротко о сильных и слабых ссылках.

Сборщик мусора освободит память из-под объекта, как только не останется «сильных» указателей на него. Даже если есть «слабые» указатели (weak pointer) — как только последняя сильная ссылка удалена, объект освобождается из памяти, а оставшиеся «слабые» ссылки обнуляются.

Пример
Представьте, что наш объект — это собака. Собака хочет «убежать» (освободить память).

Сильный указатель — это поводок с ошейником. Пока поводок прицеплен к ошейнику, собака не убежит. Если 5 человек прицепят 5 поводков к одному ошейнику (5 указателей на 1 объект) — собака не убежит до тех пор, пока не отцепят все 5 поводков.

А слабые указатели — это дети, которые тычут пальцем на собаку и кричат: «Ух ты, собака!» Пока собака на поводке, они могут тыкать («указывать на объект») сколько угодно. Но если отсоединить все поводки, то собака убежит, независимо от того, сколько детей тычут в неё пальцем.

Реклама

VIPER

Мы тут на работке потихоньку учим архитектуру VIPER. Поэтому, чтоб не терялись материалы, сложу их тут.

Первое с чего я начал было два видосика от Константина Кокорина:

Для закрепления небольшой пример построения master-detail приложения (от все того же Константина):

Конечно же книжка по VIPER от компании Rambler:
https://habrahabr.ru/company/rambler-co/blog/311248/

Хороший видос с презентацией по архитектуре:

И, самое главное — генератор модулей от того же Рамблера.