我的NSLog输出在哪里?

23

我刚开始学习iOS开发。在我的代码中使用了一些NSLog语句,但它们似乎没有输出到任何地方。我的应用程序正在使用调试配置,并且我正在从Xcode中的iPhone模拟器运行我的应用程序。我已经检查了Xcode控制台(在Run菜单下)以及我的Mac上的Console.app,但是没有任何输出。

可能的问题是什么?


2
你确定带有 NSLog 的那一行被执行了吗?试着在 main.m 中的自动释放池分配后立即插入 NSLog - hoha
请尝试执行一次清理操作,然后重新启动您的 Mac。另外,注意 Hoha 所说的内容。 - occulus
@hoha 你是正确的。由于某种原因,我的视图控制器中的日志语句没有被执行。如果你把你的评论作为答案添加进来,我会接受它的。谢谢。 - John Topley
5个回答

21

请确保已经激活了您的控制台,您可以按以下步骤操作:

  • 从菜单栏选择视图 > 调试区域 > 激活控制台
  • 或者在键盘上按下C

7

NSLog()在模拟器上的输出确实会显示在Console Mac OS X应用程序中。

前往All Messages,然后根据您的应用程序名称进行过滤以摆脱杂质,并再次运行。如果在程序执行期间实际上命中了NSLog代码,则会在输出中看到它。


我发现在应用程序启动后,检查日志时,这个特别有用,因为XCode控制台中似乎没有这些内容可用。 - zack999

4

像这样使用NSLog()

NSLog(@"The code runs through here!");

或者像这样 - 使用占位符:

float aFloat = 5.34245;
NSLog(@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat);

NSLog()中,可以像这样使用:+ (id)stringWithFormat:(NSString *)format, ...

float aFloat = 5.34245;
NSString *aString = [NSString stringWithFormat:@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat];

您可以添加其他占位符,例如:
float aFloat = 5.34245;
int aInteger = 3;
NSString *aString = @"A string";
NSLog(@"This is my float: %f \n\nAnd here is my integer: %i \n\nAnd finally my string: %@", aFloat, aInteger, aString);

1
一个很好的回答...但不是我问的问题的答案。 - John Topley
7
这样的回答不应该被投票否决。考虑到人们会抽出时间回答并提供很好的反馈,尽管它可能不是特定的答案,也许不应该被赞同,但也不应该被投票否决。 - Fernando Cervantes

3

从评论中移动

你确定执行了带有NSLog的那行代码吗?试着在main.m中自动释放池分配后插入NSLog


我的控制器代码没有运行,因为在一个xib文件中我指定了错误的控制器。 - Fiid

1

真的很奇怪。只是为了实验而已:尝试将NSLog输出重定向到某个文件中,就像这样:

freopen ("/out","w", stderr);
NSLog(@"1234567890");

如果有输出,那么你的 stderr 出了问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接