Suppression d'un controller de vue de la memory lors de l'instanciation d'un nouveau controller de vue

Dans mon application, j'instancie de nouveaux controllers de vue au lieu d'utiliser des segments, car cela semble mieux dans les animations, mes vues continuent de tourner en arrière-plan. Cela provoque de grandes memory leaks.

Mon code pour revenir à l'écran principal est:

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

Ce controller de vue est toujours actif en arrière-plan et ne devrait donc pas être instancié à nouveau. Comment puis-je faire cela.

Lorsque je ferme mon controller de vue en utilisant le code ci-dessus, il ne le décharge pas non plus, il continue à fonctionner en arrière-plan. Comment puis-je le faire décharger dès que l'écran disparaît.

J'ai essayé de faire

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

Cependant, cela ne fonctionne pas correctement. Comment puis-je détruire correctement un controller de vue de la memory lors de la sortie d'un controller de vue de cette manière.

Vous devez seulement utiliser:

 self.dismissViewControllerAnimated(true, completion: {}) 

Le rest du travail se fait par ARC

Pour vous aider lors de votre debugging, vous pouvez également append ce code:

 if let app = UIApplication.sharedApplication().delegate as? AppDelegate, let window = app.window { if let viewControllers = window.rootViewController?.childViewControllers { for viewController in viewController print(viewController.debugDescription) } } }