2010-08-29 3 views
0

je le code suivant:Obtenir EXC_BAD_ACCESS en essayant de addObject à NSMutableArray

NSInteger phoneCount = ABMultiValueGetCount(phones); 
NSMutableArray *phoneKeys = [[[NSMutableArray alloc] init] autorelease]; 
NSMutableArray *phoneKeyValues = [[[NSMutableArray alloc] init] autorelease]; 

for(CFIndex i=0; i < phoneCount; i++) { 
    //NSString *label = [(NSString *)ABMultiValueCopyLabelAtIndex(phones, i) autorelease]; 
    NSString *phone = [(NSString *)ABMultiValueCopyValueAtIndex(phones, i) autorelease]; 
    NSString *phoneIndex = [[[NSNumber alloc] initWithInt:ABMultiValueGetIdentifierAtIndex (phones, i)] autorelease]; 
    [phoneKeys addObject:phoneIndex]; // it breaks on this line 
} 

NSLog(@"Count: %@ %@", [phoneKeys count], [phoneKeyValues count]); 

Toute idée pourquoi je recevrais EXC_BAD_ACCESS lorsque je tente de le faire [phoneKeys addObject: phoneIndex]?

Merci à l'avance

+0

Avez-vous essayé de supprimer la ligne NSLog? – kennytm

+0

hmm vous avez raison. cela signifie-t-il que phoneKeys est publié trop tôt? – john

+0

Vous voulez dire que cela a fonctionné après avoir retiré le NSLog? – kennytm

Répondre

1
NSLog(@"Count: %@ %@", [phoneKeys count], [phoneKeyValues count]); 

Le procédé -count renvoie un NSUInteger, qui est juste un unsigned int. Mais %@ ne peut imprimer que des objets Objective-C, et non unsigned int. Cela provoque l'exception.

Pour imprimer unsigned int, vous devez utiliser %u au lieu de %@.

NSLog(@"Count: %u %u", [phoneKeys count], [phoneKeyValues count]); 
+0

Merci! Cette aide est beaucoup – john

0

Chaque fois que cela est arrivé à moi, à savoir le code où il casse a la gestion appropriée de la mémoire, et selon les directives de gestion de la mémoire, mais les accidents alambics, il en résulte être dû à plus de libérer somwehere autre , je ferais un examen complet du code à la recherche de fuites et je vous recommande d'utiliser les fuites outil:

Dans X-code go Exécuter> Exécuter avec l'outil de performance> fuites

Cocher cette technique Q & a aussi: http://developer.apple.com/mac/library/qa/qa2004/qa1367.html

Questions connexes