2009-07-08 5 views
1

좋아, NSLog를 객관적으로 사용하고 있습니다. 잠시 동안 디버깅을하고, 괄호 안에 무엇을 넣어도 터미널에 인쇄해야합니다. 어떤 이유로 터미널에서 인쇄가 중단되고이 오류를 해결하는 방법을 모르겠습니다. 다른 사람들이이 문제를 해결하기 위해 어떤 제안을 할 것인지 궁금합니다. 나는이 코드 (또는 최소한 간단히 해결할 수 있기를 바랍니다)에 답하는 사람을 놀라게하고 싶지 않기 때문에 코드의 일부만 포함 시켰습니다. 코드를 실행하면 "serverButton - Stage 1"과 "serverButton - Stage 2 - Complete"만 인쇄되지만 그 사이에는 아무것도 표시되지 않습니다. FYI - (void) startServer는 "Server"라는 또 다른 클래스에 있으며 "server"는 그 클래스에 대한 포인터를 만들었습니다.NSLog는 터미널에 인쇄하지 않습니다.

-(IBAction)serverButton { 
NSLog(@"serverButton - Stage 1"); 
[server startServer]; 
NSLog(@"serverButton - Stage 2 - Complete"); 
} 

-(void)startServer { 
    NSLog(@"serverButton - Stage 1"); 

    memset(&hints, 0, sizeof hints); 
    hints.ai_family = AF_UNSPEC; // set to AF_INET to force IPv4 
    hints.ai_socktype = SOCK_DGRAM; 
    hints.ai_flags = AI_PASSIVE; // use my IP 

    if ((rv = getaddrinfo(NULL, MYPORT, &hints, &servinfo)) != 0) { 
     NSLog(@"ERROR: serverButton - Stage 1"); 
     fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); 
     serverError = 1; 
     NSLog(@"Error"); 
    } 
+0

startServer에서 보이는 것처럼 "serverButton - Stage 1"을 작성한 다음 오류가 발생할 경우 몇 가지 오류 문을 작성했습니다. 그래서 날이 직선 (오류가 발생하지 않는 경우)가 인쇄되어야하자 : - 1 단계 serverButton - 1 단계 serverButton - 2 단계 - serverButton 전체를 그리고 현재는 두 번째 메시지가 인쇄되지 않는 이유는 무엇입니까? – Solmead

답변

2

startServer를 호출하기 전에 서버가 nil이 아닌지 확인하십시오. nil이면 아무 것도 호출되지 않고 오류가 생성되지 않습니다.

+0

죄송합니다. 방금 무슨 일이 일어 났는지 깨달았습니다. 나는 오늘 아침 수업을 코드에서 옮겨 직접 호출했다. 처음에는 그걸로 아무 문제가 없었고, 그 일은 서버가 앉아서 클라이언트의 메시지를 기다리는 것을하고있었습니다. 내 코드가 틀렸을 때 나 늦은 밤에 내 코드가 잘못되었다고 생각하는 것 같았습니다. 당신의 도움을 주셔서 감사합니다! –

0

당신 말 :

참고 - (무효)을 startserver는 "서버"라고 내가 "서버"상기 클래스에 대한 포인터 만든 다른 클래스에 있습니다. 나는 그 권리를 읽는다면

, 당신의 server 변수가 실제로 그렇게처럼 클래스 가리키는 :

Class server = [Server class]; 
... 
NSLog(@"begin"); 
[server startServer]; 
NSLog(@"end"); 

을 그런 경우, 다음 startServer 방법은 클래스가해야 할 것 방법 :

+ (void)startServer { 
    NSLog(@"hello!"); 
} 

그런 경우가 아니라면 코드를 조금 더 게시 할 수 있습니까? 특히 변수 server에 할당 된 부분이 유용 할 것입니다.

0

문제는 NSLog가 아닌 것처럼 보이지만 실제로 startServer가 실제로 생각한 것처럼 수신자에게 전송되지 않습니다.

0

NSLog가 터미널에 인쇄하지 않는 경우 (터미널이 무엇인지 설명하십시오). 터미널이 Xcode 디버거 콘솔이라고 가정합니다. 그런 다음 Console.app이 인쇄되었는지 여부를 확인해야합니다.

Xcode의 새 버전에는이 문제가 없습니다.

관련 문제