2010-12-13 4 views
2

Lorsque j'utilise == pour comparer les cordes, il fonctionne sur tous, mais certaines chaînes qui ont un espace supplémentaire ... (ajouté avec [NSString stringWithFormat:@"%@ %@",self.title,collectionName])Objectif C Comparaison de chaînes

Mais quand je compare avec isEqualToString, il retourne Vrai/OUI à chaque fois. la comparaison de l'image passe en l'état et frappe le retour ... devrait être impossible pour que cela a frappé la ligne 640, mais il le fait.

quelqu'un peut-il expliquer cela?

alt text

Répondre

2

Il y a un ";" après le ")" sur la ligne 637 qui explique pourquoi il est toujours entré dans la condition ... putain je sucer ... il semble que cela jetterait une erreur en quelque sorte

+0

hahahaha, au moins vous l'avez attrapé –

+1

Erreur classique de C. Une fois, j'ai dû déboguer du code écrit par un collègue qui était en fait un très bon programmeur. Il avait fait la même erreur trois fois dans l'espace de 100 lignes sources. C'était probablement le code du vendredi après-midi. – JeremyP

1

Si vous utilisez le LLVM compiler dans le cadre du projet de débogage, (pas assez stable pour la sortie, je pense), vous obtiendrez des avertissements sur des problèmes comme celui que vous avez eu.

Dans votre cas, il émettrait un avertissement plutôt qu'une instruction "if" ayant un corps vide.

Utilisé en conjonction avec l'activation de l'analyseur statique pour chaque construction, vous pouvez attraper une tonne de problèmes tôt, surtout les stupides qui sont difficiles à déboguer parce qu'ils sont si stupides qu'ils sont faciles à négliger (et je suis ici pas de vous critiquer, comme j'ai fait la même erreur d'innombrables fois!)