2012-11-27 3 views
2

나는 모든 것을 올바르게하고 있다고 생각하지만 NSLog 출력은 변수 위에 마우스를 가져 가면 표시된 올바른 값과 일치하지 않습니다. 합성 및 점 표기법이 올바르게 작동합니다.
모든 변수 위에 마우스를 올리면 // 주석과 같이 올바른 값이 나타납니다. 그러나 NSlog는 디버거 콘솔에 잘못 표시됩니다. 출력은 // 주석에도 표시됩니다. 테스트에서NSLog에 잘못된 int와 char이 표시되는 이유는 무엇입니까?

, 화면 클래스의 인스턴스 : AppDelegate에에서

{ int i; 
    char j; 
} 

: 나는 무엇을 놓치고

test.i = 10; // hover shows 10  OK 
test.j = 'z'; // hover shows 122 'z' OK 
NSLog(@"i= %i, j= %c"),test.i, test.j;// hover shows 10,122 'z'OK 
but Debugger Console shows i= 2097168, j= $ 


int k = 10; // hover shows 10  OK 
char l = 'z'; // hover shows 122 'z' OK 
NSLog(@"k= %i, l= %c"),k, l;   // hover shows 10,122 'z'OK 
but Debugger Console shows k= 6055, l= , 

? 아니면 Xcode 3.2.4, OSX 10.6에서 진정한 버그입니까?

답변

5

형식 인수를 전달하기 전에 NSlog()에 대한 괄호를 닫았습니다. 이 변경이에

NSLog(@"i= %i, j= %c"),test.i, test.j; 

을 : 제외

NSLog(@"i= %i, j= %c",test.i, test.j); 

를 함수 호출에 인수를 분리에서 쉼표는 별도의 문에 사용할 수 있습니다. 귀하의 시도는 다음과 같습니다 :

NSLog(@"i= %i, j= %c"); // An NSLog with no args, will print garbage. 
test.i; // A valid, though pointless, statement. 
test.j; // A valid, though pointless, statement. 
+0

많은 감사합니다. 나는 그것을 반복해서보고 있었고 내 실수를 보지 못했습니다. 이제 완벽하게 작동합니다. –