2010-03-30 4 views
1

Un de mes utilisateurs rapporte un crash sur son appareil, un iPhone 3GS. Les autres périphériques du même type ne signalent pas de comportement similaire. Il m'a envoyé un journal de bord et, en le lisant, je ne sais pas comment procéder. J'espère que je n'interprète pas correctement le journal de plantage mais il ne semble pas que mon action ait été encore appelée.Contrôle d'intégrité: UIBarButtonItem se bloque en essayant d'effectuer une action

Voici comment je crée et la mise en place du UIBarButtonItem:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addLog:)]; 
    self.navigationItem.rightBarButtonItem = addButton; 
    [addButton release]; 
} 

Ceci est la ma méthode d'action:

- (IBAction)addLog:(id)sender { 
    MyViewController *myController = [[MyViewController alloc] initWithNibName:@"MyNib" bundle:nil]; 
    UINavigationController *subNavigationController = [[UINavigationController alloc] initWithRootViewController: myController]; 
    [self presentModalViewController:subNavigationController animated:YES]; 
    [myController release]; 
    [subNavigationController release]; 
} 

Ceci est le journal de l'accident:

 
Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000Crashed Thread: 0 
Thread 0 Crashed: 
0 libSystem.B.dylib     0x0007e98c __kill + 81 libSystem.B.dylib     0x0007e97c kill + 4 
2 libSystem.B.dylib     0x0007e96e raise + 10 
3 libSystem.B.dylib     0x0009361a abort + 34 
4 MyApp        0x000042e8 0x1000 + 13032 
5 CoreFoundation      0x00058ede -[NSObject performSelector:withObject:withObject:] + 18 
6 UIKit        0x0004205e -[UIApplication sendAction:to:from:forEvent:] + 78 
7 UIKit        0x00094d4e -[UIBarButtonItem(Internal) _sendAction:withEvent:] + 86 
8 CoreFoundation      0x00058ede -[NSObject performSelector:withObject:withObject:] + 18 
9 UIKit        0x0004205e -[UIApplication sendAction:to:from:forEvent:] + 78 
10 UIKit        0x00041ffe -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26 
11 UIKit        0x00041fd0 -[UIControl sendAction:to:forEvent:] + 32 
12 UIKit        0x00041d2a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 350 
13 UIKit        0x0004263e -[UIControl touchesEnded:withEvent:] + 330 
14 UIKit        0x00041656 -[UIWindow _sendTouchesForEvent:] + 318 
15 UIKit        0x00041032 -[UIWindow sendEvent:] + 74 

Répondre

2

Le rapport d'erreur n'est pas symbolisé. Je peux tel à cause de la ligne:

4 MyApp        0x000042e8 0x1000 + 13032 

Dans un rapport d'accident symbolicated, cette ligne montrerait que vos méthodes ocurred l'accident. Lorsque vous créez une version de publication, les symboles de débogage sont supprimés du fichier binaire. Vous devez enregistrer le fichier .dSYM et le regroupement d'applications qui se trouvaient dans le dossier de construction après la construction.

Elles sont requises pour symboliser les rapports d'erreur.

Si vous avez enregistré ces fichiers, vous devez vous assurer qu'ils se trouvent dans un emplacement auquel le projecteur peut accéder. Si le rapport de plantage vous a été envoyé par l'utilisateur, essayez de le faire glisser dans l'onglet Rapport de plantage de la fenêtre Organiser de Xcode. Cela devrait essayer de symboliser le rapport d'erreur (mais ne réussira que si vous avez le .dSYM et le paquet d'applications).

+0

Merci! J'ai été capable de déterminer ce qui cause le crash avec cette information. – Giao

+0

Pas de problème. Gardez à l'esprit cependant, pour les prochaines versions, assurez-vous de sauvegarder vos fichiers .dSYM et App Bundles. Xcode 3.2.2 peut avoir une fonctionnalité qui permet de l'appliquer;) – Jasarien

Questions connexes