Si vous vous inquiétez des performances et que vous souhaitez vérifier un caractère, l'utilisation de la méthode -characterAtIndex: peut être plus rapide. -hasSuffix: prend une chaîne, donc potentiellement besoin de faire plus de travail que de simplement vérifier un seul caractère (bien que la différence puisse être triviale).
Vous pouvez également utiliser des catégories pour ajouter une méthode à NSString comme ceci:
@interface NSString(StringUtilities)
- (BOOL) endsWithCharacter: (unichar) c;
@end
@implementation NSString(StringUtilities)
- (BOOL) endsWithCharacter: (unichar) c
{
NSUInteger length = [self length];
return (length > 0) && ([self characterAtIndex: length - 1] == c);
}
@end
// test it...
NSString *data = @"abcd,";
if ([data endsWithCharacter: L','])
{
}
Vous devez profil, bien sûr, pour être sûr. Gardez à l'esprit cependant qu'en mettant endsWithCharacter dans une méthode, nous avons ajouté le message qui y est passé, ce qui faussera les résultats du profilage à moins que vous ne fassiez de même lors du profilage des alternatives. Tout ceci est probablement une optimisation prématurée pour la plupart des cas - mais bien sûr, si vous faites ce test des milliers de fois par seconde, cela peut être important (dans ce cas, vous voudrez probablement utiliser le code directement dans la boucle , car le passage d'un message à l'intérieur d'une boucle interne serrée n'est pas un bon plan).
robinjam, merci pour votre réponse. Je l'essaie, mais ça n'a pas marché. Est-ce une autre méthode? – Questions
Ça marche pour moi ... Vous devez avoir un bug ailleurs. – robinjam
robinjam, merci pour votre réponse. Et j'essaie un autre NSString *, ça marche aussi. Je suppose que c'est quelques autres problèmes de mon programme. Étant donné que NSString * est passé à partir d'un autre objet, puis-je afficher le dernier caractère de la chaîne NSString, car je veux confirmer que le dernier caractère. Je vous remercie. – Questions