Unicode のバッファから NSString を生成する
普段は自前の Unicode 文字列クラス(もしくは std::basic_string
しかし出来る限り NSString の生成コストを減らしたいという場合、以下のように書くのが良さそうな感じ。
NSString* ToNSString(const unichar* str, int len) { return [[[NSString alloc] initWithCharactersNoCopy:str length:len freeWhenDone:NO] autorelease]; }
または
NSString* ToNSString(const unichar* str, int len) { // CFString* と NSString* はこんぱちぶる(だったはず) return [(NSString*)CFStringCreateWithCharactersNoCopy(NULL, str, len, kCFAllocatorNull) autorelease]; }
autorelease が気になるような場所ならもちろん、
NSString* str = (NSString*)CFStringCreateWithCharactersNoCopy(NULL, str, len, kCFAllocatorNull); // str を使ってごにょごにょ [str release];
という感じに。