2012-04-26 5 views
0

사용자 지정 로거를 사용하여 텍스트 기반 게임을위한 깨끗한 콘솔 출력을 제공하려고합니다. 다음은 문제의 메서드의 코드입니다 :사용자 지정 로깅 방법 MyLog가 Objective-C의 상위 페이지 문자로 작동하지 않습니다.

void MyLog(NSString *format, ...) 
{ 
    va_list args; 
    va_start(args, format); 
    NSString *formattedString = [[NSString alloc] initWithFormat:format arguments: args]; 
    va_end(args); 
    [[NSFileHandle fileHandleWithStandardOutput] writeData:[formattedString dataUsingEncoding: NSNEXTSTEPStringEncoding]]; 
    [formattedString release]; 
} 

는 여기이 예제의 그것의 사용이다 :

NSLog(@"Unicode text: \u2665"); 
NSLog(@"ASCII Text"); 
MyLog(@"Unicode text: \u2665"); 
MyLog(@"ASCII text"); 

출력 :

2012-04-26 00:08:53.614 TextCraft[11319:a0f] Unicode text: ♥ 
2012-04-26 00:08:53.617 TextCraft[11319:a0f] ASCII Text 
ASCII text 

당신이 볼 수 있듯이, MyLog 함수는 페이지가 낮은 문자는 제대로 작동하지만 높은 페이지 문자를 인쇄하려고하면 전체 행을 건너 뜁니다. 아무도 이것이 왜 있는지 압니까?

답변

1

-dataUsingEncoding :을 (를) 호출하면 NSNEXTSTEPStringEncoding을 사용하고 있는데, ASCII와 일부 추가 항목이 있습니다. 유니 코드를 지원하려면 NSUTF8StringEncoding과 같은 적절한 인코딩을 사용해야합니다.

+0

정말 고마워요! – Supuhstar