Quelle est la bonne façon de décharger des vues dans iOS 6 dans un avertissement de mémoire (Apple doc faille)?

Dans iOS 6, viewWillUnload et viewDidUnload sont obsolètes et UIViewControllers plus décharger des vues qui ne sont pas visibles sur l'écran lors d'un avertissement de mémoire. Le - Vue-Contrôleur Guide De Programmation a un exemple de comment faire pour restaurer manuellement ce comportement.

Voici l'exemple de code:

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    //Add code to clean up any of your own resources that are no longer necessary.
    if ([self.view window] == nil)
    {
        //Add code to preserve data stored in the views that might be
        //needed later.

        //Add code to clean up other strong references to the view in
        //the view hierarchy.
        self.view = nil;
    }
}

Ci-dessous l'exemple de code est la remarque suivante:

La prochaine fois que le point de vue de la propriété est accessible, la vue est rechargé
exactement comme c'était la première fois.

Il y a un défaut évident ici. Si une vue contrôleur qui n'a pas chargé son point de vue reçoit un avertissement de mémoire il va charger son point de vue dans la ligne if ([self.view window] == nil) et nettoyer ensuite et de le libérer à nouveau. Au mieux, c'est inefficace. Au pire, il fait de la mémoire une dégradation des conditions si un complexe de vue de la hiérarchie et en soutenant les données sont chargées. J'ai vérifié ce comportement dans le simulateur iOS.

Je peux certainement de code autour de cela, mais qui semble étrange pour Apple docs pour avoir une telle erreur. Ai-je raté quelque chose?

source d'informationauteur XJones | 2012-09-22