0

Running Instruments sur mon application iPad trouvé 2 fuites, sauf que je ne peux pas comprendre d'où ils viennent. La première est dans cette méthode dans mon délégué app:Instruments - fuites dans l'application iPad

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    [window addSubview:self.viewController.view]; // <--- it leaks on this line 
    [window makeKeyAndVisible]; 
    return YES; 
} 

Je ne sais pas pourquoi cela est une fuite, je publie dans viewControllerdealloc. La deuxième fuite est dans l'une de mes tables contrôleurs vue dans cette section de code:

EditLocationViewController *locationController = [[EditLocationViewController alloc] initWithLocation:self.location]; 
     [self.navigationController pushViewController:locationController animated:YES]; // <--- it leaks on this line 
     [locationController release]; 

Je suis passé par ma classe EditLocationViewController et fait en sorte que toutes les propriétés retenues sont libérées, etc. Je ne peux pas voir une raison pour laquelle il y aurait une fuite.

Soit il me manque quelque chose ici ou Instruments signale des faux positifs.

+0

il peut être un faux positif, pouvez-vous courir passé dealloc et toujours le voir signaler une fuite? –

+0

Quel objet fuit et quel est l'historique des retenues et des libérations sur ledit objet (les instruments peuvent vous dire les deux)? – bbum

Répondre

0

Qu'est-ce qui vous fait croire qu'il y a des fuites? Je suppose que la vue elle-même est en train d'être divulguée dans les deux cas (celui appartenant au contrôleur que vous rendez visible) ou l'une des vues auxiliaires chargées dans le -loadView ou -viewDidLoad du contrôleur de vue (ceci inclut les vues chargées depuis une plume et attaché à une sortie dans le contrôleur de vue). Si vous utilisez la déclaration IBOutlet sur vos ivars, cela pourrait très bien être le cas, car ces ivars seront conservés par le contrôleur de vue. Dans ce cas, vous devez les libérer en -viewDidUnload ainsi qu'en -dealloc (assurez-vous de les supprimer après les avoir libérés en -viewDidUnload ou vous vous arrêterez la prochaine fois que vous y accéderez).

Questions connexes