Руками делать это не требуется, есть arc который позволит объекту деинициализироваться если у него нет связи ссылками с другими объектами. Либо если какие то ссылки будут помечены как weak или unowned и счётчик ссылок для объекта будет равен нулю
deinit отрабатывает автоматически, представь это как viewdidload ты не можешь просто принудительно вызвать viewdidload самостоятельно. Что касается ARC вот хорошая статья - https://habr.com/ru/post/451130/