Если вы профилируете эти решения, они намного медленнее, чем делают это:
NSMutableString *capitolziedString = [NSMutableString stringWithString:originalString];
NSString *firstChar = [[capitolziedString substringWithRange:NSMakeRange(0,1)] uppercaseString];
[capitolziedString replaceCharactersInRange:NSMakeRange(0, 1) withString:firstChar];
при тестировании на iphone 4 под управлением iOS 5:
Решение @ doomspork работало за 0,115750 мс
в то время как выше, работает в 0,064250 мс;
при тестировании на симуляторе под управлением iOS 5:
Решение @ doomspork работает за 0,021232 мс
в то время как выше работает в 0,007495 мс;