Doit-on initialiser les NSUInteger ?
colas_
Membre
Bonjour !
Mon programme a bugué et finalement j'ai trouvé l'erreur (merci instruments !). Elle était dans cette méthode :
- (void)computeNumberOfLines
{
NSUInteger result ;
while ([self necessaryHeightForNumberOfLines:result] <= [self sizeCollectionView].height)
{
result = result + 1 ;
}
_numberOfLines = result - 1;
}
Il me renvoyait des nombre énormes !!
En fait, j'ai corrigé ma méthode en ceci :
- (void)computeNumberOfLines
{
NSUInteger result = 0 ;
while ([self necessaryHeightForNumberOfLines:result] <= [self sizeCollectionView].height)
{
result = result + 1 ;
}
_numberOfLines = result - 1;
}
Et... plus de bug !
Késako ???!!!!
C'est normal ?
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
T'es sûr que c'est corrigé? Si tu passes pas dans ton while, NSUInteger moins 1 ça fait quoi?
OK ! ça répond pas à ma question mais c'est sûr que
est mieux !
EDIT :
Donc le problème n'était pas un problème d'initialisation, mais un problème de (NSUInterger)0 -1 ?
Oui, il y avait un problème de rebouclage sur un entier non signé.
Et pour répondre à ta question, si tu n'initialises pas "result" sa valeur est indéterminée donc aussi des problèmes en perspectives de manière aléatoire. D'ailleurs à l'analyse clang le dit bien...
T'aurais jamais ce bug en Swift
Et pourquoi pas :
"Nous sommes comme des nains jugés sur des épaules de géants, de telle sorte que nous puissions voir plus de choses et plus éloignés que n'en voyaient ces derniers". Une phrase que j'adore, prononcée au XIIe siècle par le philosophe Bernard de Chartres sur l'importance des penseurs de l'antiquité dans la pensée moderne.
C'est à mon sens la meilleur solution