Если вы беспокоитесь о производительности и хотите проверить наличие одного символа, использование -characterAtIndex: метод вполне может быть быстрее. -hasSuffix: принимает строку, поэтому потенциально требуется выполнить больше работы, чем просто проверка одного символа (хотя разница может быть тривиальной).
Вы также можете использовать категории, чтобы добавить метод к NSString следующим образом:
@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','])
{
}
Вы должны профиль, конечно, чтобы быть уверенным. Имейте в виду, однако, что, поместив конец метода с методомWithCharacter в метод, мы добавили к нему передаваемую служебную информацию, которая искажает результаты профилирования, если вы не сделаете то же самое при профилировании альтернатив.
Все это, вероятно, является преждевременной оптимизацией в большинстве случаев, но, конечно, если вы выполняете этот тест тысячи раз в секунду, это может иметь значение (в этом случае вы, вероятно, захотите использовать код непосредственно в цикле, так как передача сообщений внутри тесного внутреннего цикла не очень хороший план).