J'ai posté quelques questions avant, en essayant de comprendre pourquoi je reçois un EXC_BAD_ACCESS, et je l'ai fait un peu de débogagevue étant libéré lors de l'utilisation en raison des avertissements de mémoire
Voir ici : Help debugging iPhone app - EXC_BAD_ACCESS
et:
Alors, je pense que j'ai découvert ce qui se passe.
De mon journal, je me fais ceci:
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000f
Crashed Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x00003ebc objc_msgSend + 20
1 MyApp 0x0000378a -[PictureView clearPage] (PictureView.m:79)
Au début, je pensais que le problème était un objet libéré envoyé un message dans la fonction « clearpage », cependant, puisque parler à un ami, je Je suis amené à croire que l'objet PictureView lui-même pourrait déjà être libéré.
Ceci est confirmé par ma sortie de l'enregistrement:
Fri Jan 8 20:28:32 unknown MyApp[2224] <Warning>: Picture View Unloaded
Fri Jan 8 20:28:32 unknown MyApp[2224] <Warning>: Memory warning from Picture view
Fri Jan 8 20:28:34 unknown MyApp[2224] <Warning>: Scaling image
Fri Jan 8 20:28:36 unknown MyApp[2224] <Warning>: Attempting to save image to disk
Fri Jan 8 20:28:37 unknown MyApp[2224] <Warning>: Saved file to: /var/mobile/Applications/065C0D37-95C1-41D4-98F0-16A3555682CD/Documents/MyImage1.jpg
Fri Jan 8 20:28:37 unknown MyApp[2224] <Warning>: Clearing page
Fri Jan 8 20:28:40 unknown ReportCrash[2225] <Notice>: Formulating crash report for process MyApp[2224]
Fri Jan 8 20:28:41 unknown com.apple.launchd[1] <Warning>: (UIKitApplication:com.yourcompany.MyApp[0xb8e1]) Job appears to have crashed: Bus error
Alors, je suppose l'idée que j'utilise est déchargée après avoir reçu un avertissement de mémoire causé par le imagepicker ...
Et ma question est, comment puis-je empêcher cela de se produire? J'ai évidemment besoin d'appeler la méthode clearPage de PictureView, mais je ne peux pas si elle est déchargée.
Désolé, clearpage ne fait pas ce que le nom laisse deviner à. Il prépare simplement la vue pour la redessiner en effaçant ses sous-vues. PictureView est une vue extraite du rootviewcontroller: PictureView * picView = [[PictureView alloc] initWithNibName: @ "PictureView" bundle: nil]; \t [self.navigationController pushViewController: picView animé: OUI]; \t [version picView]; Dois-je libérer ceci ici? –
Alors PictureView est un ViewController? Il semble que vous ayez un problème de pointeur qui pend. Vérifiez les prises assignées (par opposition à conserver). En outre, override didReceiveMemoryWarning et casser là; appelez l'hérité et assurez-vous que tous vos points de vente sont des valeurs «saines». –
J'ai fait de PictureView une prise et je l'ai réglé sur (non atomic, retain) dans le rootviewcontroller. Malheureusement, ce crash ne se produit pas à chaque fois, donc c'est vraiment difficile à tester. Ça m'énerve maintenant :( –