Eliminar un controlador de vista de la memoria al crear una instancia de un nuevo controlador de vista

En mi aplicación, estoy creando instancias de nuevos controladores de vista en lugar de usar segues porque, como resultado, se ve mejor en animaciones, mis vistas siguen ejecutándose en segundo plano. Esto provoca grandes pérdidas de memoria.

Mi código para volver a la pantalla principal es:

let mainStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
        let vc  : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainScreen") as UIViewController
        self.presentViewController(vc, animated: false, completion: nil)

Este controlador de vista todavía está activo en segundo plano y, por lo tanto, no se debe crear una instancia nuevamente. Cómo hago esto.

Cuando cierro mi controlador de vista usando el código anterior, tampoco lo descarga, sigue ejecutándose en segundo plano. ¿Cómo hago para que se descargue tan pronto como desaparezca la pantalla?

He intentado hacer

override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated)
    view.removeFromSuperview()
    view = nil
}

Sin embargo, esto no funciona correctamente. ¿Cómo destruyo correctamente un controlador de vista de la memoria cuando salgo de un controlador de vista de esta manera?

Respuestas a la pregunta(1)

Su respuesta a la pregunta