-characterAtIndex:
最初に IMP 形式に変換することで高速化できます。
NSString *str = @"This is a test";
NSUInteger len = [str length]; // only calling [str length] once speeds up the process as well
SEL sel = @selector(characterAtIndex:);
// using typeof to save my fingers from typing more
unichar (*charAtIdx)(id, SEL, NSUInteger) = (typeof(charAtIdx)) [str methodForSelector:sel];
for (int i = 0; i < len; i++) {
unichar c = charAtIdx(str, sel, i);
// do something with C
NSLog(@"%C", c);
}
編集:CFString
参照には次のメソッドが含まれているようです:
const UniChar *CFStringGetCharactersPtr(CFStringRef theString);
これは、次のことができることを意味します。
const unichar *chars = CFStringGetCharactersPtr((__bridge CFStringRef) theString);
while (*chars)
{
// do something with *chars
chars++;
}
バッファを処理するためにメモリを割り当てたくない場合は、これが方法です。