好的,所以我一直在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");
}
答案 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没有这个问题。