NSLog不打印到终端

时间:2009-07-08 02:40:35

标签: objective-c command-line console terminal nslog

好的,所以我一直在Objective-C中使用NSLog一段时间进行调试,我知道它应该打印到终端,无论我放在括号中。由于某种原因,它只是停止打印到终端,我不知道如何解决这个错误。我想知道其他人会建议做些什么来解决这个问题。我只包含了部分代码,因为我不想吓唬某人回答这个简单(或者至少我希望它很容易修复)的问题。当我运行代码时,打印的唯一两个语句是“serverButton - Stage 1”和“serverButton - Stage 2 - Complete”,但两者之间没有其他内容。仅供参考 - (void)startServer在另一个名为“Server”的类中,我将“server”作为指向该类的指针。

-(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");
    }

4 个答案:

答案 0 :(得分:2)

在调用startServer之前添加一个检查以确保服务器不是nil,如果它是nil则不会调用任何内容并且不会生成任何错误。

答案 1 :(得分:0)

你说:

  

FYI - (void)startServer在另一个叫做“Server”的类中,我把“server”作为指向该类的指针。

如果我读得正确,你的server变量实际上指向,就像这样:

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

如果是这种情况,那么您的startServer方法必须是类方法:

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

如果不是这样的话,请你发一点代码吗?具体而言,您分配给server变量的部分会很有帮助。

答案 2 :(得分:0)

看起来问题不是NSLog,而是startServer实际上并没有像你想象的那样被发送到接收器。

答案 3 :(得分:0)

如果NSLog没有打印到终端(解释什么是终端)。我假设terminal是Xcode调试器控制台。然后,你需要检查Console.app,它是否在那里打印。

新版本的Xcode没有这个问题。