UIPopoverController *historyPop = [[UIPopoverController alloc] initWithContentViewController:nav];
[nav release];
[historyPop setPopoverContentSize:CGSizeMake(400, 500)];
[historyPop presentPopoverFromRect:CGRectMake(button.frame.origin.x, button.frame.origin.y, button.frame.size.width, 5) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
//[historyPop release];
Ceci est mon code actuel, mais l'analyseur dit que c'est probablement une fuite, ce qui est le cas (comme la ligne de libération est commentée). Mais si je décommente la ligne de sortie alors l'application plante et dit que dealloc a été atteint sur le popover alors qu'il est encore visible, alors quand devrais-je libérer le contrôleur popover?UIPopoverController et la gestion de la mémoire
La définition du contrôleur de présentation en tant que délégué de UIPopoverController ne conserve pas le contrôleur de survol. Le point d'utilisation du délégué est que vous pouvez libérer de manière appropriée le contrôleur popover lorsque vous recevez l'appel 'popoverControllerDidDismissPopover:'. Donc, faire les deux a le plus de sens. –
Il est sanglant ennuyeux qu'ils ne conservent pas lors de la présentation, et il dismatches complètement d'autres méthodes similaires (telles que la présentation de vues modales, ajoutant subviews) –
Remarque: si vous allez à la route non-délégué, vous obtiendrez un « [UIPopoverController dealloc] atteint alors que popover est encore visible "si l'utilisateur rejette le pop-over et charge immédiatement un autre pop-over - le premier prend du temps pour devenir" non-visible "et finira par être déséquilibré avant qu'il ne finisse, provoquant un accident. – Jason