6
votes

Rejeter sur Popover, [UIPOPOVERCONTROLLER DEALLOC] atteint pendant que POPOVER est toujours visible

J'ai un uipoppovercontroller stocké dans une propriété forte dans mon contrôleur d'affichage. Lorsque l'utilisateur fait pivoter l'iPad pendant que la popover est visible, je renvoie la Popover et mettez ma propriété à NIL. xxx

Lorsque le code devient Self.Popover = nil, ARC tente de traiter le uipopovercontroller, mais il s'écrase car il est censé être visible.

Comment suis-je supposé Pour rejeter et nuler la popover sans qu'il s'écrase?


1 commentaires

Belle explication du problème. Je rencontre exactement la même situation.


3 Réponses :


1
votes

Essayez de nuler dans la vue indiquée, si vous pensez vraiment qu'il soit nécessaire de le faire. Puisque ARC publie automatiquement des objets, je ne suis pas sûr que cela soit vraiment nécessaire.


2 commentaires

La vue n'est pas déchargée, je ressens simplement un changement d'orientation.


C'est parce que je veux que cela disparaisse après avoir été rejeté au lieu d'être gardé en mémoire, et je vérifie également cette variable à voir si j'ai un stockage, etc.



16
votes

Tout d'abord, il serait souhaitable de vérifier si la pondéreuse est présentée, cela vérifiera également si elle est allouée:

- (void)releasePopover
{
    self.popover.delegate = nil;
    self.popover = nil;
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if ([self.popover isPopoverVisible]){
        [self.popover dismissPopoverAnimated:NO];
        NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(releasePopover) object:nil];
        [[NSOperationQueue mainQueue] addOperation:invocationOperation];
    }
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    [self releasePopover];
}


0 commentaires

1
votes

Debout sur les épaules de la réponse de Simon, voici mon correctif pour le crash: xxx


0 commentaires