2009-12-11 3 views
2

Je soumis mon application à iTunesConnect et Apple me rendre le rapport d'accident suivant:NSLog fait planter iPhone lors de l'Apple App Review

Thread 2 Crashed: 
0 libobjc.A.dylib     0x00003eb8 objc_msgSend + 16 
1 Foundation      0x0004c3aa _NSDescriptionWithLocaleFunc + 24 
2 CoreFoundation     0x0003d52e _CFStringAppendFormatAndArgumentsAux + 1390 
3 CoreFoundation     0x0003ceca _CFStringCreateWithFormatAndArgumentsAux + 66 
4 CoreFoundation     0x00073fd6 _CFLogvEx + 34 
5 Foundation      0x000661a4 NSLogv + 74 
6 Foundation      0x0006614a NSLog + 18 
7 mobilescan      0x00039014 -[BlaBlaBlaDao insertCategoryWithId:andName:] (BlaBlaBlaDao.m:110) 

Il semble que lorsque l'application tente d'imprimer le journal, il fait la application se brisant. Ce est très étrange, car en mode débogage, l'application Stopes 2 sec puis imprimer l'erreur et continuer à travailler ...

partir de la ligne 110 dans le BlaBlaBlaDao.m où le plantage de l'application j'ai ces lignes:

NSLog(@"category, id:%@, name:%@", subcategory.id, subcategory.name); 

    [subcategory addFreshfoodProductsObject:freshfoodProduct]; 

    NSError *error = nil; 
    if (![managedObjectContext save:&error]) { 
     [managedObjectContext rollback]; 
     NSLog(@"error: %@", error); 
    } 

Il vient d'un exemple Apple ...

Tout le monde sait pourquoi?

merci pour votre aide!

+0

Eh bien, pour commencer, vous ne pouvez pas avoir un membre nommé id car c'est un mot réservé pour un type dans l'objectif-c. Vous devriez commencer par le renommer. –

+0

Quel NSLog est-ce qui échoue? Le premier ou le second avec erreur? – epatel

Répondre

8

Dans votre chaîne de format, vous attendez deux objets. Pour la journalisation, la méthode -description d'un objet est appelée. Il semble que votre application plante en essayant d'imprimer la description de l'un des objets. Il se peut que l'une ou les deux de vos propriétés ne soient pas des objets, mais plutôt des valeurs scalaires. Il est également possible que l'une des propriétés, s'il s'agit d'un objet, ait été libérée à un moment donné et que vous envoyiez une requête à une instance désallouée. En dehors de la panne, n'utilisez pas NSLog dans une application que vous soumettez à l'App Store. Il n'y a aucune raison pour qu'il soit là, et tout ce qu'il fait est de jeter du texte sur la console de chaque iPhone exécutant votre application. Si je ne me trompe pas, tout cela est connecté sur chaque iPhone qui fonctionnerait. Non seulement cela, mais il ralentit votre application sans nécessité. Supprimez ces appels avant de soumettre l'application ou utilisez # ifdef pour les localiser uniquement dans vos versions de débogage.