111 votes

Dealloc UIPopovercontroller atteint alors que le popover est toujours visible

Je vous assure que j'ai fait j'attends la réponse en DONC pour ma question, mais aucun d'entre eux ont été utiles. Ici, j'ai reçu un code simple qui devrait présenter un UIImagePickerController dans un UIPopoverController:

-(void)takePicture:(id)sender{
UIImagePickerController *picker=[[UIImagePickerController alloc] init];
picker.delegate=self;
picker.sourceType=UIImagePickerControllerSourceTypeCamera;
picker.allowsEditing=YES;
UIPopoverController *poc=[[UIPopoverController alloc] 
                            initWithContentViewController:picker];
[poc presentPopoverFromBarButtonItem:bbItem 
            permittedArrowDirections:UIPopoverArrowDirectionAny
                            animated:NO];
}

Maintenant, même dès la première fois que je reçois [UIPopoveController dealloc] atteint au cours de la... de l'erreur et le programme se bloque. Je ne fais pas tout retenir,relase ou autoreleases conformément à l'ARC. Est-il de toute considération spéciale avec UIPopoverControllers lorsque bénéficiant d'ARC?

203voto

phix23 Points 24407

UIPopoverControllers doit toujours être contenu dans une variable d'instance. C'est une bonne pratique de créer une propriété solide pour cela.

11voto

tarmes Points 6363

Lorsque la fonction se ferme, il n'y a pas d'autre référence au contrôleur de popover, donc il est désalloué trop tôt.

Essayez de l'ajouter en tant que membre de votre classe à la place.

Tim

10voto

orafaelreis Points 835

Ajout quel @phix23 répondit : créer * propriété poc comme ceci :

et puis changer

pour

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X