Si vous êtes inquiet au sujet de la performance, et que vous voulez vérifier pour un caractère, utilisez -characterAtIndex: méthode peut très bien être plus rapide. -hasSuffix: prend une chaîne de caractères, donc potentiellement besoin de faire plus de travail que la simple vérification d'un seul caractère (bien que la différence peut être trivial).
Vous pouvez également utiliser les 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 devriez profil, bien sûr, pour être sûr. Gardez à l'esprit que, en mettant les endsWithCharacter dans une méthode, nous avons ajouté la transmission de message de surcharge, ce qui fausserait les résultats de profilage, sauf si vous faites la même chose lors de l'analyse des solutions de rechange.
Tout cela est sans doute prématuré d'optimisation pour la plupart des cas - mais bien sûr, si vous êtes en train de faire ce test des milliers de fois par seconde, il peut bien en question (dans ce cas, vous souhaiterez probablement utiliser directement le code dans la boucle, comme la transmission de messages à l'intérieur d'un resserrement de l'intérieur de la boucle n'est pas un bon plan).