Crash avec problème de NSNumber
apocaalypso
Membre
Bonjour,
J'ai un problème qui cause un crash sans donner d'erreur précise dans la console. Il m'indique la ligne et la méthode concernée dans le debugger mais j'ai un peu de mal avec.
Voici les lignes qui me pose problème :
Voici la méthode présente dans les lignes ci-dessus :
et voici mes arrays :
J'ai posté une image du debugger, j'ai vu du rouge alors je me suis dit que ça n'était pas bon bon...
Je ne vois pas pourquoi mon application crash, quelqu'un aurait une solution ou une piste ?
Merci !
J'ai un problème qui cause un crash sans donner d'erreur précise dans la console. Il m'indique la ligne et la méthode concernée dans le debugger mais j'ai un peu de mal avec.
Voici les lignes qui me pose problème :
NSNumber *newFleets = [self displayFleetsOfPlanet:whatPlanetToAttack];<br /> NSNumber *fleetsMovingNb = [NSNumber numberWithInteger:1];<br /> NSLog(@"newFleets = %d, fleetsMovingNb = %d", [newFleets integerValue], [fleetsMovingNb integerValue]);<br /> if([newFleets integerValue]-[fleetsMovingNb integerValue] == 0)<br /> {<br /> [self changeUserOfPlanet:whatPlanetToAttack withUser:[NSNumber numberWithInteger:0]];<br /> }<br />
Voici la méthode présente dans les lignes ci-dessus :
-(NSNumber *)displayFleetsOfPlanet:(UIImageView *)planet<br />{<br /> // We get the index of the planet in the array and we get the value in the second array at this same index<br /> NSInteger indexOfPlanet = [cases indexOfObject:planet];<br /> NSNumber *numberOfFleets = [fleetsByPlanets objectAtIndex:indexOfPlanet];<br /> NSLog(@"\t number of fleets %d of planet at index %d", [numberOfFleets integerValue], indexOfPlanet);<br /> <br /> return numberOfFleets;<br />}
et voici mes arrays :
cases = [[NSArray alloc] initWithObjects:case1,case2, ... où les cases sont des UIImageView<br />fleetsByPlanets = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInteger:0],[NSNumber numberWithInteger:0],...<br />
J'ai posté une image du debugger, j'ai vu du rouge alors je me suis dit que ça n'était pas bon bon...
Je ne vois pas pourquoi mon application crash, quelqu'un aurait une solution ou une piste ?
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Peux-tu me dire en gros comment faire ?
C'est les breakpoints ?
Le debugger m'indique l'erreur ici :
Oui mets des breakpoints (en cliquant à gauche des nombre de lignes dans xCode) et lance un build and debug, ensuite tu te sers des icones pour avancer dans le code entre les breakpoints.
Regarde ce que te retourne [fleetsByPlanets objectAtIndex:indexOfPlanet];
Salut apocaalypso
file:///Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.DeveloperTools.docset/Contents/Resources/Documents/documentation/DeveloperTools/Conceptual/XcodeDebugging/300-Debugging_in_the_Debugger/chapter_6_section_3.html#//apple_ref/doc/uid/TP40007057-CH6-BABGJCIF
Est un lien qui te montrera pourquoi une ligne en rouge dans le debugger n'a rien d'alarmant. De là tu pourras explorer un peu plus les possibilités de Xcode dans ces situations.
Sinon "-[UICGColor integerValue]: unrecognized selector sent to instance 0x5e10300" veut dire que le selecteur integerValue demandé à l'instance 0x5e10300 de UICGColor n'existe pas.
hth
Ceci présage donc d'un écrasement mémoire, c'est à dire que tu as relâché (releasé) trop tôt, ou oublié un retain, sur un de ces 2 objets. Du coup à un moment donné ils se sont retrouvés avec un retainCount de zéro, se sont détruits se disant que personne ne les utilisait plus... et là tu essayes d'y réaccéder alors qu'ils n'existent plus, donc il va lire dans la mémoire à une adresse mémoire dont le contenu a été supprimé entre temps, et va y trouver un peu n'importe quoi... en tout cas pas ce que tu attends.
Vérifie le bon balancement de tes retain/release et ta bonne gestion de la mémoire. passe un coup de ClangGUI à la limite il peut t'indiquer des trucs qui pourraient t'aider.
Parfois j'ai ce type de message "unrecognized selector" pour des liaisons ...
Le selecteur ou la propriété sont bien là , en fait c'est l'objet qui n'y est plus !
Merci Ali, tu viens de m'ouvrir les yeux.