Метод startMonitoring
принимает замыкание, которое содержит ссылку weak
на экземпляр вашего контроллера представления. Это закрытие позволяет одноэлементному экземпляру ReachabilityManager
знать, что должно происходить при изменении состояния сети.
Передача слабой ссылки на это закрытие гарантирует, что память, занятая вашим экземпляром контроллера представления, может быть освобождена, когда он больше не используется, что предотвращает потенциальную утечку памяти.
Иногда ваш контроллер представления будет собирать мусор, когда он удаляется (или больше не используется в другом месте), но единственный экземпляр ReachabilityManager
(который переживает ваш контроллер представления) будет по-прежнему вызывать закрытие, которое было передано startMonitoring
метод ранее. Так как ваш контроллер вида был собран мусором, self
будет nil
в этом случае, и вы увидите, что nil
печатается время от времени.
Если бы закрытие содержало ссылку strong
на ваш контроллер представления, вы, вероятно, столкнулись бы с утечками памяти, так как ваш контроллер представления не будет собирать мусор при отклонении.