Ваше предложение работает только для простых символов, таких как ASCII. NSStrings хранят Unicode, и если ваш персонаж имеет длину в несколько Unichars, то вы можете получить тарабарщину. Используйте
- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;
, если вы хотите определить, сколько унитаров у вашего персонажа. Я использую это для перехода по моим строкам, чтобы определить, где находятся границы символов.
Быть полностью юникодным - это немного работы, но зависит от того, какие языки вы используете. Я вижу много азиатского текста, поэтому большинство персонажей перетекают из одного пробела, поэтому мне нужно выполнить эту работу.