Почему deinit не вызывается на UITabBarController? - PullRequest
0 голосов
/ 31 августа 2018

Я в процессе изучения Swift. Я бы не сказал, что я новичок, но я уверен, что, как и многие другие люди, изучающие онлайн, я упустил много фундаментальных шагов для понимания того, что происходит на самом деле.

Пройдя довольно далеко со своим приложением, я теперь вижу, что у меня очень плохое управление памятью. Я использую кеширование SDWebImage, на которое определенно влияет GIFS, но более того, я сейчас узнаю о сохранении циклов и деинитах.

Может кто-нибудь объяснить, почему ViewController внутри deitit UITabBarController никогда не вызывается? Почему это не плохо? (если это не так) и просто общие советы / указания по управлению памятью при использовании контроллера панели вкладок. Я рассмотрел циклы сохранения и почему они вызваны и исправлены, но, по-видимому, это не моя проблема в инструментальных инструментах xCodes.

Любой совет будет высоко ценится

Спасибо.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Кроме того, еще одна причина, по которой объект не может быть деинициализирован, связана с ссылками. Поскольку вы только запускаете Swift, я настоятельно рекомендую вам посмотреть учебники по циклам ссылок, ARC (автоматический подсчет ссылок) и утечкам памяти. Они научат вас о
слабый вар И подходящее время для его использования. В начале я бы сказал, что это не так уж важно, но в дальнейшем они полезны при попытке устроиться на работу в области разработки программного обеспечения.

0 голосов
/ 31 августа 2018

Контроллер панели вкладок не создает и не уничтожает контроллеры представления (вкладки), которыми он управляет. Он распространяется на все из них, так что пользователь может переключаться между ними по мере необходимости. Таким образом, контроллеры представления из вкладок сохраняются до тех пор, пока сохраняется контроллер панели вкладок.

Если корневой контроллер представления вашего приложения является контроллером панели вкладок, который никогда не исчезнет, ​​также как и контроллеры представления для вкладок.

Если вместо этого вы создадите контроллер панели вкладок и поместите его в стек навигации или представите его модально, контроллер панели вкладок будет освобожден после его снятия / отклонения, а затем будут также освобождены контроллеры представления.

...