Bonjour,
Dans mon application Iphone, j'ai des objets de type ArretSynthese avec comme attributs NomArret et Ville.
Juste après le remplissage de mon tableau qui comporte mes ArretSynthese, je fais un test si je peux accéder aux attributs :
Cela fonctionne parfaitement, j'obtiens bien la liste des villes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (ArretSynthese *arretSynthese in tabListeArrets) { NSLog(@"%@",arretSynthese.Ville); }
Même résultat si je demande arretSynthese.NomArret.
Plus tard dans mon programme, je fais appel à ce même tableau.
Et c'est la que mon problème arrive. Autant je peux parfaitement accéder à l'attribut NomArret, mais impossible pour l'attribut Ville. Mon programme quitte subitement, sans laisser le moindre message d'erreur en console.
Ce code fonctionne :
mais si je change l'attribut NomArret par l'attribut Ville dans le test de type de la classe, mon programme requitte subitement sans message d'erreur. Je pense pas que ce soit normal que le programme plante quand utilise la méthode isKindOfClass ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 for (ArretSynthese *arretSynthese in [listeArret tabListeArrets]) { if ([arretSynthese isKindOfClass:[ArretSynthese class]]) { NSLog(@"Type : arretSynthese"); if ([arretSynthese.NomArret isKindOfClass:[NSString class]]) { NSLog(@"NomArret : type String"); } } }
C'est étrange, car après le remplissage du tableau, j'ai accès à mes 2 attributs, puis au cours du programme, je perds l'accès à "Ville".
Je précise que nul part ailleurs dans mon programme je modifie/lit mon tableau contenant mes objets ArretSynthese.
J'ai regardé du côté du setter de l'attribut Ville pour voir ce qui pouvait poser problème.
Si j'utilise dans cette méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 -(void) setVille:(NSString *)ville{ }
ou alors
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Ville=ville;
Cela fait planter mon programme quand j'essaye d'accèder à l'attribut Ville.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Ville = [NSString stringWithFormat:@"%@",ville];
Par contre, si je fais :
ou encore
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Ville = @"Lyon";
la, je peux accèder à mon attribut "Ville" partout dans mon programme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Ville = [[NSString alloc] initWithFormat:@"%@",ville];
Mais je peux pas laisser çà, car je ne peux pas faire ni de release, ni de autorelease. Et le nom de ma ville change.
Je preneur de toutes explications, doc, car je trouve ce problème très étrange.
J'éspere avoir été le plus clair possible.
Merci d'avance
Krisp
Partager